COUNTERSince June 16, 2000
STUDIO KAMADAJapanese to English by Excite
戻る | サイトマップ | ホーム
X680x0の未公開機能2003-11-15(Sat) 21:34

 この資料は、X680x0のメーカー純正のハードウェアとソフトウェアの未公開機能(マニュアルなどのメーカー公開資料に記載されていない機能)をまとめたものです。一部、未公開ではない機能も含まれています。


目次


BIND.Xの未公開機能

  1. バインドファイルの内容を更新できなくする(/A+Rまたは/A+S)
  2.  BIND.Xに未公開オプション/A+Rまたは/A+Sを指定してバインドすると、「BIND.X /U」でバインドファイルの内容を更新することができなくなります。RはReadonly属性、SはSystem属性。

  3. バインドしたファイル名を表示できなくする(/A+Hまたは/A+S)
  4.  BIND.Xに未公開オプション/A+Hまたは/A+Sを指定してバインドすると、「BIND.X /L」でバインドしたファイル名を表示することができなくなります。「BIND.X /L」でファイル名を見ると「system reserved file」と表示されます。COMMAND.Xはこの方法でバインドされています。HはHide属性。

CONFIG.SYSの未公開文法

  1. ROMデバッガを組み込む(ROMDB=ON)
  2.  CONFIG.SYSに

        ROMDB=ON

    と書いておくと、Humanが起動するときにROMデバッガが組み込まれます。

  3. コンソールをリモートで立ち上げる(CTTY)
  4.  CONFIG.SYSに

        CTTY

    と書いておくと、標準入出力とエラー出力がAUXに切り替わります。これはCOMMAND.XのCTTY AUXに相当します。

  5. 指定したアドレスを呼び出してデバイスドライバを組み込む([ROM〜])
  6.  CONFIG.SYSに

        [ROM$xxxxxxxx]

    または

        [ROM?]

    と書いておくと、指定したアドレスをデバイスドライバとみなして組み込みます。[ROM?]のときは?で指定された数字によってアドレスが決まっています。

    [ROM?]の?と組み込まれるデバイスドライバのアドレスの対応
    [ROM?]組み込まれるデバイスドライバのアドレス
    [ROM0]$00BFFFFC
    [ROM1]$00FE4FFC
    [ROM2]$00EE0000
    [ROM3]$00EE4000
    [ROM4]$00EE8000
    [ROM5]$00EEC000
    [ROM6]$00EF0000
    [ROM7]$00EF4000
    [ROM8]$00EF8000
    [ROM9]$00EFC000

  7. ^C、^N、^P、^Q、^Sを無効化する(OFF=〜)
  8.  CONFIG.SYSに

        OFF=CNPQS

    と書いておくと、DOSコールレベルでCTRL+C、CTRL+N、CTRL+P、CTRL+Q、CTRL+Sの入力が無効になります。CNPQSは、無効化したいコントロールの文字だけ記述します。


CONFIGED.Xの未公開機能

  1. CONFIG.SYSとCONFIG.TMPをすべてのドライブから検索する(-A)
  2.  -Aを指定するとCONFIG.SYSとCONFIG.TMPをすべてのドライブから検索するようになります。

  3. 編集画面から選択画面へ戻る(-B)
  4.  -Bを指定すると編集画面から選択画面へ戻ることができるようになります。

  5. 入力ファイル名を指定する(-I)
  6.  -I<ファイル名>として入力ファイル名を指定することができます。

  7. 入力を待たずにCONFIG.TMPから起動する(-T)
  8.  -Tを指定すると入力を待たずにCONFIG.TMPから起動するようになります。

  9. 使用法を表示する(-?)
  10.  コマンドラインから

        >CONFIGED -?

    と入力すると使用法が表示されます。


     補足
      confexp.xを使用すると、CONFIG.SYSの文法が拡張されて、MPUに応じてデバイスドライバを自動的に選択させるといったことが可能になります。


FORMAT.Xの未公開機能

  1. フロッピーディスクを2HC 1.2MBモードでフォーマットする(/5)
  2.  フロッピーディスクを2HC 1.2MBモード(512バイト/セクタ、15セクタ/トラック、2トラック/シリンダ、80シリンダ/ディスク)でフォーマットすることができます。

        >FORMAT /5 [ドライブ名:]

     備考
      2HCモードでフォーマットしたフロッピーディスクはAT互換機とデータを交換するときに便利。

  3. フロッピーディスクを2HD 1.44MBモードでフォーマットする(/4)
  4.  3.5インチフロッピーディスクを2HD 1.44MBモード(512バイト/セクタ、18セクタ/トラック、2トラック/シリンダ、80シリンダ/ディスク)でフォーマットすることができます。

        >FORMAT /4 [ドライブ名:]

     動作条件
      内蔵ドライブの場合は改造が必要です。
      FDDEVICE.Xを組み込んでおく必要があります。

  5. フロッピーディスクを2DD 640KBモードでフォーマットする(/8)
  6.  3.5インチフロッピーディスクを2DD 640KBモード(512バイト/セクタ、8セクタ/トラック、2トラック/シリンダ、80シリンダ/ディスク)でフォーマットすることができます。

        >FORMAT /8 [ドライブ名:]

     動作条件
      内蔵ドライブの場合は改造が必要です。
      FDDEVICE.Xを組み込んでおく必要があります。

  7. フロッピーディスクを2DD 720KBモードでフォーマットする(/9)
  8.  3.5インチフロッピーディスクを2DD 720KBモード(512バイト/セクタ、9セクタ/トラック、2トラック/シリンダ、80シリンダ/ディスク)でフォーマットすることができます。

        >FORMAT /9 [ドライブ名:]

     動作条件
      内蔵ドライブの場合は改造が必要です。
      FDDEVICE.Xを組み込んでおく必要があります。


Human68kの未公開機能

  1. デバイスドライバをEXCONFIGの前に組み込む
  2.  BIND.Xを使ってHUMAN.SYSにデバイスドライバをバインドしておくと、そのデバイスドライバが最初に組み込まれます。CONFIG.SYSのEXCONFIG=を解釈するよりも前に組み込まれるので、EXCONFIGの影響を受けません。

  3. プログラムを上位アドレスにロードする
  4.  .X形式の実行ファイルの先頭から4バイト目を2にすると、その実行ファイルを実行したときにtext+data+bssに必要な分だけのメモリを上位から確保されてそこにプログラムがロードされます。


IOCSの未公開機能

  1. BEEPの処理を変更する
  2.  X68030(ROM 1.3)では、BEEP(コントロールコード$07)の処理を変更することができます。IOCSのワーク[$0978.W].Lに-1を設定し、[$0D12.W].Lに処理ルーチンのアドレスを格納します。ビジュアルベルなどに変更することができるでしょう。

  3. 制御文字を表示する
  4.  IOCS _B_PUTCでd1.wに$0100+コントロールコードを指定すると、コントロールコードを実行せずに半角サイズの制御文字を画面に表示することができます。

  5. キー入力をエミュレートする(#$05)
  6.  IOCSコール#$05は、実際には押されていないキーが押されたように処理させることができます。SX-WINDOWなどで使用されています。
        ;IOCS _SKEYSET
        ;$05 キー入力エミュレーション
        ;<d1.b:スキャンコード
        ;>d0.b:スキャンコード

  7. キーボードのLEDの状態をまとめて設定する(#$06)
  8.  IOCSコール#$06は、キーボードのLEDの状態をまとめて設定します。入力モードには影響せず、LEDの状態だけが変更されます。
        ;IOCS _LEDCTRL
        ;$06 キーボードのLEDの状態をまとめて設定する
        ;<d1.b:LEDの状態(0=消灯,1=点灯)
        ; bit0 かな
        ; bit1 ローマ字
        ; bit2 コード入力
        ; bit3 CAPS
        ; bit4 INS
        ; bit5 ひらがな
        ; bit6 全角

  9. キーボードのLEDを再設定する(#$07)
  10.  IOCSコール#$07は、IOCSのワーク([$0810.W].B)が保持している現在のLEDの状態をキーボードに再設定します。
        ;IOCS _LEDSET
        ;$07 キーボードのLEDを再設定する

  11. キーボードのリピート開始までの時間を設定する($08)
  12.  IOCSコール$08は、キーボードのリピート開始までの時間を設定します。リピート開始までの時間は(200+100*設定値)msになります。
        ;IOCS _KEYDLY
        ;$08 キーリピートのディレイタイム設定
        ;<d1.b:ディレイタイム(0〜15)

  13. キーボードのリピートの間隔を設定する($09)
  14.  IOCSコール$09は、キーボードのリピートの間隔を設定します。リピートの間隔は(30+5*設定値^2)msになります。
        ;IOCS _KEYREP
        ;$09 キーリピートのインターバル設定
        ;<d1.b:インターバル(0〜15)

  15. OPT.2キーによるテレビコントロール機能を有効にする($0A)
  16.  IOCSコール$0Aは、OPT.2キーによるテレビコントロール機能を有効にします。
        ;IOCS _OPT2TVON
        ;$0A OPT.2キーによるテレビコントロールを許可
        ;パラメータなし

  17. OPT.2キーによるテレビコントロール機能を無効にする($0B)
  18.  IOCSコール$0Aは、OPT.2キーによるテレビコントロール機能を無効にします。
        ;IOCS _OPT2TVOFF
        ;$0B OPT.2キーによるテレビコントロールを禁止
        ;パラメータなし

  19. テキストパレットの16色すべてに異なる色を設定する($14)
  20.  IOCSコール$14は、テキストパレットを設定します。IOCSコール$13のTPALETとの違いは、16色すべてに異なるカラーコードを設定できるという点です。通常、テキストパレットの4〜7および8〜15にそれぞれ共通のカラーコードを設定することでマウスカーソル、電卓、ソフトキーボードがテキストよりも手前にあるように見える仕組みになっていますが、TPALET2はその制約を受けません。
        ;IOCS _TPALET2
        ;$14 テキストパレットの取得と設定(全色独立)
        ;<d1.b:パレットコード(0〜15)
        ;<d2.l:カラーコード
        ;  カラーコード(0〜65535)
        ;      >d0.l:
        ;        0 正常終了
        ;        -1 エラー(パレットコードの指定がおかしい)
        ;  -1 取得のみ
        ;      >d0.l:現在のカラーコード
        ;        -1 エラー(パレットコードの指定がおかしい)
        ;        その他 カラーコード

  21. マウスデータ受信処理アドレスを設定する($36)
  22.  IOCSコール$36は、SCCチャンネルBの割り込みルーチンでマウスデータの3バイト目の受信が完了すると呼び出されるマウス受信データ処理ルーチンの先頭アドレス[$0938.w].lを設定します。マウス受信データ処理ルーチンは、3バイトのマウスデータが格納されているワークエリアの先頭アドレスがa1レジスタに設定された状態で呼び出されます。通常はマウスデータからIOCSのワークエリアを更新するルーチンが設定されています。むやみに変更してはいけません。
        ;IOCS _MS_VCS
        ;$36 マウス受信データ処理の設定
        ;_MS_INITでもシステム規定の処理ルーチンが設定されるので_MS_INITの後に指定すること
        ;<d1.l:マウス受信データ処理アドレス(マウスカーソル)
        ;  0 システム規定の処理ルーチンに戻す
        ;<d2.w:マウスデータ受信タイマー初期値
        ;  システム規定の処理ルーチンのときは無効

  23. テキスト表示の拡張エスケープシーケンス処理アドレスを設定する($37)
  24.  IOCSコール$37は、拡張エスケープシーケンス処理ルーチンの先頭アドレス[$097E.w].lを設定します。拡張エスケープシーケンス処理ルーチンは、ESCシーケンスの先頭('['の位置)のアドレスがa0レジスタに設定された状態で呼び出されます。通常はHuman68kがカーソル位置のコンソール入力へのエコーバックとファンクション表示行のON/OFFを行うエスケープシーケンスを拡張するために使用しています。
        ;IOCS _EXESC
        ;$37 拡張ESCシーケンス処理ルーチンの設定
        ;<d1.l:拡張ESCシーケンス処理ルーチンのアドレス(0=解除)

  25. 外字フォントアドレスを設定する($38)
  26.  IOCSコール$38は、外字フォント領域の先頭アドレスを設定します。Human68kがCONFIG.SYSのuskcgの指定に従って読み込んだ外字フォントを登録するときに使用しています。なお、IOCS.XがこのIOCSコールを拡張しており、外字だけでなく通常のフォントのアドレスやIOCSコール$16(FNTADR)で9〜11区および14〜15区の文字コードが指定された場合の処理ルーチンも設定できるようになっています。
        ;IOCS _CHR_ADR
        ;$38 外字フォントアドレスの設定
        ;<d1.l:外字フォントアドレス
        ;<d2.l:外字グループ
        ;  0 16×16 $2C21〜$2D7E
        ;  1 16×16 $7621〜$777E
        ;  2 8×16 $F400〜$F5FF
        ;  3 24×24 $2C21〜$2D7E
        ;  4 24×24 $7621〜$777E
        ;  5 12×24 $F400〜$F5FF
        ;>d0.l:設定前の外字フォントアドレス
        ;  -1 エラー

  27. BEEPのADPCMデータの先頭アドレスと長さを設定する($39)
  28.  IOCSコール$39は、BEEP(コントロールコード$07)のADPCMデータの先頭アドレスとバイト数を設定します。Human68kがCONFIG.SYSのbellの指定に従って読み込んだADPCMデータをBEEPに登録するときに使用しています。なお、X68030(ROM 1.3)では、BEEPの処理そのものを差し替えることができます。→BEEPの処理を変更する
        ;IOCS _SETBEEP
        ;$39 BEEP処理の設定
        ;<d1.l:BEEP音のADPCMデータのアドレス(-1=差し換えルーチン[$0D12.w].lを呼ぶ)
        ;<d2.w:BEEP音のADPCMデータのバイト数(0=鳴らさない)
        ;>d0.l:0

  29. IOCSレベルでプリンタの設定を行う($3A)
  30.  IOCSコール$3Aは、プリンタ環境([$0A16.w]〜[$0A79.w])をまとめて設定します。設定されるデータには、漢字モードのON/OFF、ハードコピーのときに使用するビットイメージ出力モードのON/OFF、改行幅の変更などの制御コードが含まれています。
        ;IOCS _SETPRN
        ;$3A プリンタ環境の設定
        ;<a1.l:環境のアドレス(0=標準環境を設定)

  31. CRTCとビデオコントローラを操作してグラフィック画面のモードを設定する($91)
  32.  IOCSコール$91は、IOCSコール$10(CRTMOD)の設定に関係なくCRTCとビデオコントローラを直接操作してグラフィック画面のモード(色数と実画面サイズ)を設定します。
        ;IOCS _G_MOD
        ;$91 グラフィック画面モードの設定
        ;<d1.b:グラフィック画面モード
        ;  -1 取得のみ
        ;  bit0〜1 グラフィック色数
        ;    0 16色
        ;    1 256色
        ;    2 禁止
        ;    3 65536色
        ;  bit2 グラフィック実画面サイズ
        ;    0 512×512ドット
        ;    1 1024×1024ドット(bit0〜1を0にすること)
        ;>d0.l:変更前のグラフィック画面モード

  33. ビデオコントローラを操作してプライオリティを設定する($92)
  34.  IOCSコール$92は、ビデオコントローラを直接操作して画面間のプライオリティを設定します。グラフィックが256色モードのときは、グラフィックページ間のプライオリティは0>1>2>3または2>3>0>1のいずれかに設定します。65536色モードのときは0>1>2>3に設定します。
        ;IOCS _PRIORITY
        ;$92 画面間およびグラフィックページ間のプライオリティの設定
        ;<d1.w:プライオリティの指定
        ;  -1 取得のみ
        ;  下位バイト グラフィックページ間のプライオリティ
        ;    bit0〜1 SC0:最も優先順位の高いグラフィックページ番号(0〜3)
        ;    bit2〜3 SC1:2番目に優先順位の高いグラフィックページ番号(0〜3)
        ;    bit4〜5 SC2:3番目に優先順位の高いグラフィックページ番号(0〜3)
        ;    bit6〜7 SC3:4番目に優先順位の高いグラフィックページ番号(0〜3)
        ;  上位バイト グラフィック,テキスト,スプライト間のプライオリティ(0が一番手前)
        ;    bit8〜9 GR:グラフィック画面の優先順位(0〜2)
        ;    bit10〜11 TX:テキスト画面の優先順位(0〜2)
        ;    bit12〜13 SP:スプライト画面の優先順位(0〜2)
        ;>d0.w:変更前のプライオリティ

  35. ビデオコントローラを操作して特殊モードを設定する($93)
  36.  IOCSコール$93は、ビデオコントローラを直接操作して特殊モードと画面毎の表示のON/OFFを設定します。
        ;IOCS _CRTMOD2
        ;$93 画面表示のON/OFFと特殊モードの設定
        ;<d1.w:画面表示のON/OFFと特殊モードの設定
        ;  -1 取得のみ
        ;  下位バイト 画面表示のON/OFF(0=OFF,1=ON)
        ;    bit0〜3 グラフィック画面(512×512)
        ;      bit0 GS0:最も優先順位の高いグラフィックページ
        ;      bit1 GS1:2番目に優先順位の高いグラフィックページ
        ;      bit2 GS2:3番目に優先順位の高いグラフィックページ
        ;      bit3 GS3:4番目に優先順位の高いグラフィックページ
        ;    bit4 GS4:グラフィック画面(1024×1024)
        ;    bit5 TON:テキスト画面
        ;    bit6 SON:スプライト画面
        ;  上位バイト 特殊モード(0=無効,1=有効)
        ;    bit8 G/T:グラフィックとテキスト
        ;    bit9 G/G:グラフィックとグラフィック
        ;    bit10 B/P:グラフィックVRAMのLSBで領域指定
        ;    bit11 H/P:0=特殊プライオリティ,1=半透明
        ;    bit12 EXON:特殊モード
        ;    bit13 VHT:グラフィックとビデオ
        ;    bit14 AH:グラフィックとテキストパレット0
        ;    bit15 Ys:CMPCUT(Ys)信号を強制的にHにする
        ;>d0.w:変更前の画面表示のON/OFFと特殊モードの設定


ROM Human

 X68030のROMにHuman68k v2.15が入っていることは知られていますが、X68000のROMにHuman68k v1.00が入っていることはあまり知られていないようです。

 X68030よりも前の機種では、次のコマンドを実行してリセットするとROM Humanが起動します。

    > SWITCH.X BOOT=ROM$FE4FFC

 この設定をおこなってからリセットすると、ROMに入っているHuman68k version 1.00が起動します。X68000XVIよりも前の機種(ROM 1.0)にはROMディスクが入っていてターミナルモードになります。


ROMディスク

 X68000XVIよりも前の機種(ROM 1.0)にはROMディスクが入っています。

 X68000XVIよりも前の機種でROM Humanを起動すると、CONFIG.SYSが読み込まれてPRNDRV.SYS 1.00が組み込まれてからTERM.X V1.0が起動してターミナルモードになります。ターミナルモードでF9キーを押してSPEEDと入力するとSPEED.X Version 1.00が起動してシリアルポートの設定ができます。うまくいかないときは、SRAMの初期化をおこなってからやりなおすとうまくいくことがあります。

 上記のCONFIG.SYSとPRNDRV.SYSとTERM.XとSPEED.Xが入っている場所がROMディスクです。ROMディスクの中のソフトウェアはバージョンが古く機能も乏しいので、実用性を求めるならば普通に起動したほうがよいと思います。

SRAMに保存されているROMディスク関連の情報(X68000XVIよりも前の機種)
アドレスサイズ初期値内容
$00ED0048.l$00FFDC00ROMディスクの先頭アドレス
$00ED004C.w$04001セクタあたりのバイト数
$00ED004E.b$011クラスタあたりのセクタ数
$00ED004F.b$01FAT領域の個数
$00ED0050.w$0000予約領域のセクタ数
$00ED0052.w$0020ルートディレクトリに入るエントリ数
$00ED0054.w$0009全領域のセクタ数
$00ED0056.b$F9メディアバイト
$00ED0057.b$011個のFAT領域に使用するセクタ数


ROMデバッガ

 X68000初代機からX68030までのすべての機種にROMデバッガが内蔵されています。DB.Xの機能を縮小してリモート専用にしたようなもので、RS-232Cケーブルで他のマシンと接続することで使用できます。バスエラーやINTERRUPTスイッチなどでデバッガが起動し、gコマンドで復帰します。qコマンドはありません。デバイスドライバなどのデバッグで威力を発揮します。

 ROMデバッガはいくつかの方法で組み込むことができます。

 CONFIG.SYSで組み込む方法
  ROMデバッガを組み込む(ROMDB=ON)

 SWITCH.Xで組み込む方法(次回起動時に組み込まれる)
  ROMデバッガをON/OFFする(ROMDB=〜)

 OPT.2キーで組み込む方法(起動時にOPT.2キーを押していると組み込まれる)
  ROMデバッガを有効にして起動(OPT.2キー)

 手動で組み込むこともできますが、ROMのバージョンによって組み込み方が異なるので注意する必要があります。スーパーバイザモードで下記のコードを実行すれば確実でしょう。
ROMデバッガを組み込むコード(Human68k v3.02より抜粋)
        IOCS    _ROMVER
        cmp.l   #$12920101,d0
        bcc     1f
        jsr     $00FE0000
        bra     2f
1:      movea.l $00FF0008,a0
        cmpa.l  #$01000000,a0
        bcc     2f
        movea.l #$00001000,a6
        jsr     (a0)
2:


SWITCH.Xの未公開機能

  1. ROMデバッガをON/OFFする(ROMDB=〜)
  2.  SWITCH.Xを使ってコマンドラインで次のように指定すると、ROMデバッガをON/OFFできます。

     次回の起動時にROMデバッガを組み込むとき

        >switch debug=on

     次回の起動時にROMデバッガを組み込まないとき

        >switch debug=off


SX-WINDOW関連の未公開機能

  1. エンドファイルメンテ
  2.  スタートアップメンテ.Xに未公開オプション「-E」を指定するとエンドファイルメンテとして動作します。


TIMER.Xの未公開機能

  1. TIMER.Xの常駐を解除する(/KILL)
  2.  TIMER.Xに未公開オプション/KILLを指定すると、TIMER.Xの常駐を完全に解除することができます。

  3. 指定した時刻に指定したプログラムを実行する(/X 〜)
  4.  TIMER.Xに未公開オプション「/X 時刻 実行ファイル名 コマンドライン」を指定すると、指定した時刻に指定したプログラムを実行することができます。指定した時刻にカレントパスがどこになっているかわからない場合は、実行ファイル名をフルパスで書く必要があります。指定したプログラムをTIMER.Xのスレッドで起動するだけなので、特に標準入出力を使ったり変更したりするプログラムを指定してはいけません。また、自力で終了できるプログラムでなければなりません。メインのスレッドがメモリをすべて使っているとプログラムを起動できません。


拡張メモリボードの未公開機能

  1. 拡張メモリボードのスーパーバイザ保護機能
  2.  拡張メモリボードCZ-6BEnは、増設したメモリ領域を256KB単位でスーパーバイザ保護するかどうか指定することができます。
     スーパーバイザ保護する範囲を設定するためのI/Oポートアドレスは$00EAFF81,$00EAFF83,…となっており、下位のポートの下位のビットから順に$00200000〜$0023FFFF,$00240000〜$0027FFFF,…の範囲に対応し、ビットに1を書き込むとその領域がスーパーバイザ保護されてユーザモードではアクセスできなくなります。なお、このポートは書き込み専用です。読み出そうとするとバスエラーになりますので注意して下さい。

    I/Oポートとスーパーバイザ保護範囲の対応
    ポートアドレスビットスーパーバイザ保護される範囲
    $00EAFF810$00200000〜$0023FFFF
    1$00240000〜$0027FFFF
    2$00280000〜$002BFFFF
    3$002C0000〜$002FFFFF
    4$00300000〜$0033FFFF
    5$00340000〜$0037FFFF
    6$00380000〜$003BFFFF
    7$003C0000〜$003FFFFF
    $00EAFF830$00400000〜$0043FFFF
    1$00440000〜$0047FFFF
    2$00480000〜$004BFFFF
    3$004C0000〜$004FFFFF
    4$00500000〜$0053FFFF
    5$00540000〜$0057FFFF
    6$00580000〜$005BFFFF
    7$005C0000〜$005FFFFF
    $00EAFF850$00600000〜$0063FFFF
    1$00640000〜$0067FFFF
    2$00680000〜$006BFFFF
    3$006C0000〜$006FFFFF
    4$00700000〜$0073FFFF
    5$00740000〜$0077FFFF
    6$00780000〜$007BFFFF
    7$007C0000〜$007FFFFF
    $00EAFF870$00800000〜$0083FFFF
    1$00840000〜$0087FFFF
    2$00880000〜$008BFFFF
    3$008C0000〜$008FFFFF
    4$00900000〜$0093FFFF
    5$00940000〜$0097FFFF
    6$00980000〜$009BFFFF
    7$009C0000〜$009FFFFF
    $00EAFF890$00A00000〜$00A3FFFF
    1$00A40000〜$00A7FFFF
    2$00A80000〜$00ABFFFF
    3$00AC0000〜$00AFFFFF
    4$00B00000〜$00B3FFFF
    5$00B40000〜$00B7FFFF
    6$00B80000〜$00BBFFFF
    7$00BC0000〜$00BFFFFF

     動作条件
      X68000に拡張メモリボードCZ-6BEnを装着した環境で使用できます。X68030は本体内にこの機能を持っています。なお、I/Oデータ機器のPIO-6BEnも同様の機能を持っていますが、Xsimm10はコスト削減とHuman68kが対応していないためにこの機能を持っていません。

    メモ
      KRAMD.SYSというRAMディスクドライバは、このスーパーバイザ保護機能を活用してRAMディスク領域をスーパーバイザ保護することができます。RAMディスク領域をスーパーバイザ保護しておくと、暴走したときなどにRAMディスクの内容が壊れにくくなります。


キーボードの未公開機能

  1. キーボードのクリスマスツリー(F1+F2+F3)
  2.  「F1」「F2」「F3」の3つのキーを押しながらキーボードをX68k本体に接続すると、キーボードのLEDがランダム(に見えるよう)な順序で点滅します。
     コネクタを繋ぎなおさなければ普通に入力できません。

     動作条件
      X68kの全機種のキーボードで動作します。
      この機能はキーボードの中に入っているプロセッサで処理されています。キーボードの中のプロセッサがリセットされたとき、すなわちキーボードに電源が供給され始めたときに、「F1」「F2」「F3」の3つのキーが押されていることが条件です。X68k本体の電源が入っていなくても、X68k本体の電源コードがコンセントに繋がっていてX68k本体の背面スイッチがONになっていれば、キーボードをX68k本体に接続したときに動作します。

  3. キーボードのルーレット(記号入力+登録+HELP)
  4.  「記号入力」「登録」「HELP」の3つのキーを押しながらキーボードをX68k本体に接続すると、キーボードのすべてのLEDが5回点滅してから、「ひらがな」→「全角」→「かな」→「ローマ字」→「コード入力」→「CAPS」→「INS」→「ひらがな」の順序でLEDが繰り返し点滅します。
     BREAKキーを押すと普通に入力できる状態になります。

     動作条件
      X68kの全機種のキーボードで動作します。
      この機能はキーボードの中に入っているプロセッサで処理されています。キーボードの中のプロセッサがリセットされたとき、すなわちキーボードに電源が供給され始めたときに、「記号入力」「登録」「HELP」の3つのキーが押されていることが条件です。X68k本体の電源が入っていなくても、X68k本体の電源コードがコンセントに繋がっていてX68k本体の背面スイッチがONになっていれば、キーボードをX68k本体に接続したときに動作します。

  5. キーボードのデバッグモード(かな+ローマ字+コード入力)
  6.  「かな」「ローマ字」「コード入力」の3つのキーを押しながらキーボードをX68k本体に接続すると、押したキーのスキャンコードを2進数でキーボードのLEDにエコーバックするようになります。
     コネクタを繋ぎなおさなければ普通に入力できません。

    押したキーと点灯するLEDの対応
    キースキャンコードビット番号
    点灯するLED
    6
    全角
    5
    ひらがな
    4
    INS
    3
    CAPS
    2
    コード入力
    1
    ローマ字
    0
    かな
    ESC $01      
    1 ! $02      
    2 " $03     
    3 # $04      
    4 $ $05     
    5 % $06     
    6 & $07    
    7 ' $08      
    8 ( $09     
    9 ) $0A     
    0 $0B    
    - = $0C     
    ^ ~ $0D    
    \ | $0E    
    BS $0F   
    TAB $10      
    Q $11     
    W $12     
    E $13    
    R $14     
    T $15    
    Y $16    
    U $17   
    I $18     
    O $19    
    P $1A    
    @ ` $1B   
    [ { $1C    
    リターン $1D   
    A $1E   
    S $1F  
    D $20      
    F $21     
    G $22     
    H $23    
    J $24     
    K $25    
    L $26    
    ; + $27   
    : * $28     
    ] } $29    
    Z $2A    
    X $2B   
    C $2C    
    V $2D   
    B $2E   
    N $2F  
    M $30     
    , < $31    
    . > $32    
    / ? $33   
    _ $34    
    スペース $35   
    HOME $36   
    DEL $37  
    ROLLUP $38    
    ROLLDOWN $39   
    UNDO $3A   
    $3B  
    $3C   
    $3D  
    $3E  
    CLR $3F 
    / $40      
    * $41     
    - $42     
    7 $43    
    8 $44     
    9 $45    
    + $46    
    4 $47   
    5 $48     
    6 $49    
    = $4A    
    1 $4B   
    2 $4C    
    3 $4D   
    ENTER$4E   
    0 $4F  
    , $50     
    . $51    
    記号入力 $52    
    登録 $53   
    HELP $54    
    XF1 $55   
    XF2 $56   
    XF3 $57  
    XF4 $58    
    XF5 $59   
    かな $5A   
    ローマ字 $5B  
    コード入力 $5C   
    CAPS $5D  
    INS $5E  
    ひらがな $5F 
    全角 $60     
    BREAK $61    
    COPY $62    
    F1 $63   
    F2 $64    
    F3 $65   
    F4 $66   
    F5 $67  
    F6 $68    
    F7 $69   
    F8 $6A   
    F9 $6B  
    F10 $6C   
    SHIFT $70    
    CTRL $71   
    OPT.1 $72   
    OPT.2 $73  
    NUM $74   
      斜体はテンキーです。NUMキーはCompactキーボードのみ。

     動作条件
      X68kの全機種のキーボードで動作します。
      この機能はキーボードの中に入っているプロセッサで処理されています。キーボードの中のプロセッサがリセットされたとき、すなわちキーボードに電源が供給され始めたときに、「かな」「ローマ字」「コード入力」の3つのキーが押されていることが条件です。X68k本体の電源が入っていなくても、X68k本体の電源コードがコンセントに繋がっていてX68k本体の背面スイッチがONになっていれば、キーボードをX68k本体に接続したときに動作します。

  7. Compactのキーボードの未公開制御コード
  8.  Compactのキーボード(X68000 Compact XVIまたはX68030 Compactのキーボード)には、未公開の制御コードがあります。これらの制御コードを使用することで、Compactのキーボードに特有の機能を制御することができます。

     動作条件
      Compactのキーボードであること。


電源ONまたはリセットするときに有効なキー操作

  1. SRAMの初期化(CLRキー)
  2.  X68000XVI以降の機種(ROM 1.1以降)では、CLRキーを押しながら電源ONまたはリセットすると画面に

        「S-RAMを初期化します。よろしいですか?(Y/N)」

    と表示され、Yキーで答えるとSRAMの全体が初期化(ゼロクリア)されます。

     補足
      X68000XVIよりも前の機種(ROM 1.0)でコンピュータウイルスの疑いがあるなどの理由でどうしてもSRAMを初期化したい場合は、次のような手順を試みてください。

     ぺけ-BASICが使える場合。次の3行を適当な名前でテキストファイルにセーブしてぺけ-BASICで実行してからリセットすると、SRAMのシステムで使用する部分(SRAMの先頭から91バイト)だけが初期化されます。

        bpoke(&HE8E00D,49)
        bpoke(&HED0000,0)
        bpoke(&HE8E00D,0)

     無償公開されたシャープのソフトウェアに含まれているCコンパイラ(XC)にはデバッガ(DB.X)が含まれています。デバッガがインストールされている場合は、上のぺけ-BASICのコードと同じことを次の手順で実行できます。

        >db
        -mes e8e00d 31
        -mes ed0000 00
        -mes e8e00d 00
        -q
        >

     この後リセットすると、SRAMのシステムで使用する部分(SRAMの先頭から91バイト)だけが初期化されます。

     中古のX680x0で以前に誰が使っていたかわからないものを入手したときは、まず最初にSRAMを初期化することをお勧めします。

     SRAMを初期化するとHuman68kで使用するメモリ容量の設定なども初期化されてしまいます。継続して使用している過程で単にブートデバイスを変更したいだけならば、SWITCH.Xのメニューでブートデバイスを変更すれば十分です。ブートデバイスの問題でSWITCH.Xを起動できないときは、Human68kのシステムディスクをセットしてOPT.1キーを押しながら起動することでSWITCH.Xが使える環境になります。

  3. 画面モードをVGAモードにして起動(Vキー)
  4.  X68030(ROM 1.3)では、Vキーを押しながら電源ONまたはリセットすると、画面モードがVGAモード(モード$13)になります。純正の液晶ディスプレイなどで使用します。

  5. 画面モードを標準モードにして起動(Nキー)
  6.  X68030(ROM 1.3)では、Nキーを押しながら電源ONまたはリセットすると、画面モードが標準モード(モード$10)になります。VGAモードを解除するときに使います。

  7. ROMデバッガを組み込んで起動(OPT.2キー)
  8.  SRAMのROMデバッガ起動フラグ([$00ED0058].B)がOFFのとき、OPT.2キーを押しながら電源ONまたはリセットするとROMデバッガが組み込まれます。SRAMのROMデバッガ起動フラグがONのときは逆の動作になります(OPT.2キーが押されていないときだけROMデバッガが組み込まれる)。SRAMのROMデバッガ起動フラグはSWITCH.Xで操作できます。

  9. X68030を10MHzのX68000相当の動作速度で起動(XF1キー)
  10.  X68030(ROM 1.3)では、XF1キーを押しながら電源ONまたはリセットすると、強制的にキャッシュOFF(命令キャッシュ、データキャッシュともにOFF)になり、10MHzのX68000相当のメモリウェイトが設定されて起動します。

  11. X68030を16MHzのX68000相当の動作速度で起動(XF2キー)
  12.  X68030(ROM 1.3)では、XF2キーを押しながら電源ONまたはリセットすると、強制的にキャッシュOFF(命令キャッシュ、データキャッシュともにOFF)になり、16MHzのX68000相当のメモリウェイトが設定されて起動します。

  13. X68030を10MHzのX68000相当の動作速度でHuman68k v2.15を起動(XF3キー)
  14.  X68030(ROM 1.3)では、XF3キーを押しながら電源ONまたはリセットすると、強制的にキャッシュOFF(命令キャッシュ、データキャッシュともにOFF)になり、10MHzのX68000相当のメモリウェイトが設定され、ROMに入っているHuman68k v2.15が起動します。

  15. X68030を16MHzのX68000相当の動作速度でHuman68k v2.15を起動(XF4キー)
  16.  X68030(ROM 1.3)では、XF4キーを押しながら電源ONまたはリセットすると、強制的にキャッシュOFF(命令キャッシュ、データキャッシュともにOFF)になり、16MHzのX68000相当のメモリウェイトが設定され、ROMに入っているHuman68k v2.15が起動します。

  17. X68030でHuman68k v2.15を起動(XF5キー)
  18.  X68030(ROM 1.3)では、XF5キーを押しながら電源ONまたはリセットすると、ROMに入っているHuman68k v2.15が起動します。キャッシュの状態はSRAMのキャッシュの設定に従います(CACHE.Xで設定できます)。メモリウェイトは操作しないので、電源ONまたはリセットボタンを押して起動した場合はノーウェイトになります。

  19. フロッピーディスクのイジェクト(CTRLキー)
  20.  CTRLキーを押しながら電源ONまたはリセットすると、フロッピーディスクがセットされていても読まずにイジェクトされます。
     ブートデバイスを標準(STD)に設定している場合は、電源ONまたはリセットしたときにフロッピーディスクがセットされていると最初にフロッピーディスクのIPLを読みに行きますが、CTRLキーが押されているとフロッピーディスクのIPLを読む前にディスクがイジェクトされます。

  21. SRAMのブートデバイスの設定を無視して標準(STD)で起動(OPT.1キー)
  22.  OPT.1キーを押しながら電源ONまたはリセットすると、SRAMに保存されているブートデバイスの設定を無視して強制的に標準(STD)の順序でブートデバイスが検索されます。普段はSCSIハードディスクから起動しているが一時的にフロッピーディスクから起動したい場合などに使います。コンピュータウイルスなどの影響で正常に起動できなくなってしまった場合にも有効です。
     標準(STD)のブートデバイスの検索順序は以下の通り
        フロッピーディスク(ドライブ0→ドライブ1→ドライブ2→ドライブ3)
        SASIまたはSCSI(内蔵インタフェイス)
        ROM(拡張SCSIボードを含む)
        SRAM

  23. ハードディスクのパーティションを選択して起動(HELPキー)
  24.  FORMAT.Xでハードディスクをフォーマットするときに自動起動のパーティションを指定しますが、HELPキーを押しながら電源ONまたはリセットすることで自動起動のパーティションを選択することもできます。


ビデオコントローラの未公開機能

  1. 領域指定なしの半透明モード
  2.  少なくともX68000 XVI以降のX68000およびX68030には、領域指定なしの半透明モードが存在します。このモードのレジスタの設定についてInside X68000には「動作は未定義」と書いてあるのですが、おそらくすべての機種で動作すると思います(動かない機種を知っている人は教えてください)。半透明モードにするときにVRAMの最下位ビットを無視(?)してくれるので、65536色のグラフィックのみを表示している状態からテキストの背景にグラフィックが暗く見える状態に瞬時に切り替えたいときに便利です。

     下のプログラムをX680x0の実機で実行すると、キーを押すたびに画面が次のように変化します。

      (1)テキスト=明るい青、背景=暗い青
      (2)テキスト=白、背景=暗い青
      (3)テキスト=白、背景=暗い紫

     残念ながら、このモードはEX68 v215、けろぴー v0.61、WinX68k高速版 v0.56のいずれにも実装されていないようです。

    領域指定なしの半透明モードの実験プログラム
            .include        doscall.mac
            clr.l   -(sp)
            DOS     _SUPER
            move.l  d0,(sp)
            move.l  #$0010_0005,-(sp)                       ;512×512ドット,65536色
            DOS     _CONCTRL
            move.w  d0,(2,sp)
            move.l  #$0002_0003,-(sp)                       ;TCOLOR(3)
            DOS     _CONCTRL
            pea.l   'X'.w                                   ;PUTCHAR('X')
            DOS     _CONCTRL
            addq.l  #8,sp
    ;                 GGGGG RRRRR BBBBB L
            move.w  #%00000_00000_00000_0,$E82200           ;TPALET(0)=黒
            move.w  #%11111_11111_11111_0,$E82206           ;TPALET(3)=白
    ;                    SP TX GR G3 G2 G1 G0
            move.w  #%00_10_01_00_11_10_01_00,$E82500       ;グラフィック>テキスト>スプライト
    ;                 Y A V E H L G T   S T G 3210
            move.w  #%0_0_0_0_0_0_0_0_0_1_1_0_0000,$E82600  ;グラフィックOFF
            lea.l   $C00000,a0                              ;GFILL(青)
    ;                 GGGGG RRRRR BBBBB L GGGGG RRRRR BBBBB L
            move.l  #%00000_00000_11111_0_00000_00000_11111_0,d0
            move.w  #512-1,d2
    2:      move.w  #512/2-1,d1
    1:      move.l  d0,(a0)+
            dbra    d1,1b
            dbra    d2,2b
    ;                 Y A V E H L G T   S T G 3210
            move.w  #%0_0_0_1_1_0_0_1_0_1_1_0_1111,$E82600  ;半透明ON,領域指定なし
            DOS     _GETC                                   ;(1)テキスト=明るい青,背景=暗い青
    ;                    SP TX GR G3 G2 G1 G0
            move.w  #%00_10_00_01_11_10_01_00,$E82500       ;テキスト>グラフィック>スプライト
            DOS     _GETC                                   ;(2)テキスト=白,背景=暗い青
    ;                 GGGGG RRRRR BBBBB L
            move.w  #%00000_11111_00000_0,$E82200           ;TPALET(0)=赤
            DOS     _GETC                                   ;(3)テキスト=白,背景=暗い紫
            DOS     _CONCTRL
            addq.l  #4,sp
            DOS     _SUPER
            addq.l  #4,sp
            DOS     _EXIT
    

(2000-10-18) 公開。
(2000-10-25) 更新。
(2000-11-22) 更新。
(2001-01-17) 更新。
(2001-05-31) 更新。
(2001-06-09) 更新。
(2002-06-19) 更新。
(2003-11-15) IOCS $09〜$93を追加。
戻る | サイトマップ | ホーム
E-mail: m_kamada at nifty dot comMirrorCopyright (C) 1999-2004 M.Kamada All Rights Reserved.