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


目次

  1. BIND.X の未公開機能
    1. バインドファイルの内容を更新できなくする(/A+R または/A+S)
    2. バインドしたファイル名を表示できなくする(/A+H または/A+S)
  2. CONFIG.SYS の未公開文法
    1. ROM デバッガを組み込む(ROMDB=ON)
    2. コンソールをリモートで立ち上げる(CTTY)
    3. 指定したアドレスを呼び出してデバイスドライバを組み込む(DEVICE=[ROM~])
    4. ^C、^N、^P、^Q、^S を無効化する(OFF=~)
  3. CONFIGED.X の未公開機能
    1. CONFIG.SYS と CONFIG.TMP をすべてのドライブから検索する(-A)
    2. 編集画面から選択画面へ戻る(-B)
    3. 入力ファイル名を指定する(-I)
    4. 入力を待たずに CONFIG.TMP から起動する(-T)
    5. 使用法を表示する(-?)
  4. FORMAT.X の未公開機能
    1. フロッピーディスクを 2HC (1200KB) モードでフォーマットする(/5)
    2. フロッピーディスクを 2HQ (1440KB) モードでフォーマットする(/4)
    3. フロッピーディスクを 2DD (640KB) モードでフォーマットする(/8)
    4. フロッピーディスクを 2DD (720KB) モードでフォーマットする(/9)
    5. フロッピーディスクを 2HQ (1440KB) モードでフォーマットするとき x86 セーフを無効にする(/4 /I)
  5. Human68k の未公開機能
    1. デバイスドライバを EXCONFIG の前に組み込む
    2. プログラムを上位アドレスにロードする
  6. IOCS の未公開機能
    1. BEEP の処理を変更する
    2. 制御文字を表示する
    3. キー入力をエミュレートする($05)
    4. キーボードの LED の状態をまとめて設定する($06)
    5. キーボードの LED を再設定する($07)
    6. キーボードのリピート開始までの時間を設定する($08)
    7. キーボードのリピートの間隔を設定する($09)
    8. OPT.2 キーによるテレビコントロール機能を有効にする($0A)
    9. OPT.2 キーによるテレビコントロール機能を無効にする($0B)
    10. テキストパレットの 16 色すべてに異なる色を設定する($14)
    11. マウスデータ受信処理アドレスを設定する($36)
    12. テキスト表示の拡張エスケープシーケンス処理アドレスを設定する($37)
    13. 外字フォントアドレスを設定する($38)
    14. BEEP の ADPCM データの先頭アドレスと長さを設定する($39)
    15. IOCS レベルでプリンタの設定を行う($3A)
    16. CRTC とビデオコントローラを操作してグラフィック画面のモードを設定する($91)
    17. ビデオコントローラを操作してプライオリティを設定する($92)
    18. ビデオコントローラを操作して特殊モードを設定する($93)
    19. ペンカラーを設定する($95)
    20. 描画ページを設定する($96)
    21. グラフィック画面からパターンを読み出す($97)
    22. グラフィック画面にパターンを書き込む(スルーカラー指定)($98)
    23. グラフィック画面にパターンを書き込む($99)
    24. グラフィック画面にビットパターンを書き込む($9A)
    25. グラフィック画面にビットパターンを書き込む(バックカラー指定)($9B)
    26. グラフィック画面にビットパターンを書き込む(拡大指定)($9C)
  7. ROM Human
  8. ROM ディスク
  9. ROM デバッガ
    1. CONFIG.SYS で組み込む方法
    2. SWITCH.X で組み込む方法(次回起動時に組み込まれる)
    3. OPT.2 キーで組み込む方法(起動時に OPT.2 キーを押していると組み込まれる)
    4. ROM デバッガを組み込むコード
  10. SWITCH.X の未公開機能
    1. ROM デバッガを ON/OFF する(DEBUG=~)
  11. SX-WINDOW 関連の未公開機能
    1. エンドファイルメンテ
  12. TIMER.X の未公開機能
    1. TIMER.X の常駐を解除する(/KILL)
    2. 指定した時刻に指定したプログラムを実行する(/X~)
  13. X-BASIC の未公開機能
    1. ADPCM の再生を再開する(a_cont())
    2. ADPCM の再生を中止する(a_end())
    3. ADPCM の再生中か調べる(a_stat())
    4. ADPCM の再生を中断する(a_stop())
    5. キーボードから 1 文字待たずに入力する(inkey$(0))
    6. キー入力バッファが空か調べる(keysns())
    7. トラックバッファの先頭アドレスを返す(m_atoi(t))
  14. 拡張メモリボードの未公開機能
    1. 拡張メモリボードのスーパーバイザ保護機能
  15. キーボードの未公開機能
    1. キーボードのクリスマスツリー(F1+F2+F3)
    2. キーボードのルーレット(記号入力+登録+HELP)
    3. キーボードのデバッグモード(かな+ローマ字+コード入力)
    4. Compact のキーボードの未公開制御コード
  16. 電源 ON またはリセットするときに有効なキー操作
    1. SRAM の初期化(CLR キー)
    2. 画面モードを VGA モードにして起動(V キー)
    3. 画面モードを標準モードにして起動(N キー)
    4. ROM デバッガを組み込んで起動(OPT.2 キー)
    5. X68030 を 10MHz の X68000 相当の動作速度で起動(XF1 キー)
    6. X68030 を 16MHz の X68000 相当の動作速度で起動(XF2 キー)
    7. X68030 を 10MHz の X68000 相当の動作速度で Human68k v2.15 を起動(XF3 キー)
    8. X68030 を 16MHz の X68000 相当の動作速度で Human68k v2.15 を起動(XF4 キー)
    9. X68030 で Human68k v2.15 を起動(XF5 キー)
    10. フロッピーディスクのイジェクト(CTRL キー)
    11. SRAM のブートデバイスの設定を無視して標準(STD)で起動(OPT.1 キー)
    12. ハードディスクのパーティションを選択して起動(HELP キー)

1. BIND.X の未公開機能

1.1. バインドファイルの内容を更新できなくする(/A+R または /A+S)

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

1.2. バインドしたファイル名を表示できなくする(/A+H または /A+S)

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

2. CONFIG.SYS の未公開文法

2.1. ROM デバッガを組み込む(ROMDB=ON)

CONFIG.SYS に

ROMDB=ON

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

2.2. コンソールをリモートで立ち上げる(CTTY)

CONFIG.SYS に

CTTY

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

2.3. 指定したアドレスを呼び出してデバイスドライバを組み込む(DEVICE=[ROM~])

CONFIG.SYS に

DEVICE=[ROM$xxxxxxxx]

または

DEVICE=[ROM?]

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

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

2.4. ^C、^N、^P、^Q、^S を無効化する(OFF=~)

CONFIG.SYS に

OFF=CNPQS

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

3. CONFIGED.X の未公開機能

3.1. CONFIG.SYS と CONFIG.TMP をすべてのドライブから検索する(-A)

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

3.2. 編集画面から選択画面へ戻る(-B)

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

3.3. 入力ファイル名を指定する(-I)

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

3.4. 入力を待たずに CONFIG.TMP から起動する(-T)

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

3.5. 使用法を表示する(-?)

コマンドラインから

>CONFIGED -?

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

補足

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

4. FORMAT.X の未公開機能

4.1. フロッピーディスクを 2HC (1200KB) モードでフォーマットする(/5)

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

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

備考

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

4.2. フロッピーディスクを 2HQ (1440KB) モードでフォーマットする(/4)

FORMAT.X に /4 を指定することで、3.5 インチフロッピーディスクを 2HQ (1440KB) モード(512 バイト / セクタ、18 セクタ / トラック、2 トラック / シリンダ、80 シリンダ / ディスク)でフォーマットすることができます。

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

動作条件

内蔵ドライブの場合は改造が必要です。

FDDEVICE.X を組み込んでおく必要があります。

4.3. フロッピーディスクを 2DD (640KB) モードでフォーマットする(/8)

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

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

動作条件

内蔵ドライブの場合は改造が必要です。

FDDEVICE.X を組み込んでおく必要があります。

4.4. フロッピーディスクを 2DD (720KB) モードでフォーマットする(/9)

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

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

動作条件

内蔵ドライブの場合は改造が必要です。

FDDEVICE.X を組み込んでおく必要があります。

4.5. フロッピーディスクを 2HQ (1440KB) モードでフォーマットするとき x86 セーフを無効にする(/4 /I)

FORAMT.X に /4 を指定して 2HQ (1440KB) モードでフロッピーディスクをフォーマットすると IPL の先頭 3 バイトが $EB,$FE,$90 になりますが、/4 と一緒に /I も指定すると $60,$3C,$90 になります。

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

5. Human68k の未公開機能

5.1. デバイスドライバを EXCONFIG の前に組み込む

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

5.2. プログラムを上位アドレスにロードする

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

6. IOCS の未公開機能

6.1. BEEP の処理を変更する

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

6.2. 制御文字を表示する

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

6.3. キー入力をエミュレートする($05)

IOCS コール $05 は、実際には押されていないキーが押されたように処理させることができます。SX-WINDOW などで使用されています。

;IOCS _SKEYSET
;$05 キー入力エミュレーション
;<d1.b:スキャンコード
;>d0.b:スキャンコード

6.4. キーボードの LED の状態をまとめて設定する($06)

IOCS コール $06 は、キーボードの LED の状態をまとめて設定します。入力モードには影響せず、LED の状態だけが変更されます。

;IOCS _LEDCTRL
;$06 キーボードのLEDの状態をまとめて設定
;<d1.b:LEDの状態(0=消灯,1=点灯)
;       bit0    かな
;       bit1    ローマ字
;       bit2    コード入力
;       bit3    CAPS
;       bit4    INS
;       bit5    ひらがな
;       bit6    全角

6.5. キーボードの LED を再設定する($07)

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

;IOCS _LEDSET
;$07 キーのLEDを再設定する
;パラメータなし

6.6. キーボードのリピート開始までの時間を設定する($08)

IOCS コール $08 は、キーボードのリピート開始までの時間を設定します。リピート開始までの時間は (200+100* 設定値)ms になります。

;IOCS _KEYDLY
;$08 キーリピートのディレイタイム設定
;<d1.b:ディレイタイム(0~15)

6.7. キーボードのリピートの間隔を設定する($09)

IOCS コール $09 は、キーボードのリピートの間隔を設定します。リピートの間隔は (30+5* 設定値 ^2)ms になります。

;IOCS _KEYREP
;$09 キーリピートのインターバル設定
;<d1.b:インターバル(0~15)

6.8. OPT.2 キーによるテレビコントロール機能を有効にする($0A)

IOCS コール $0A は、OPT.2 キーによるテレビコントロール機能を有効にします。

;IOCS _OPT2TVON
;$0A OPT.2キーによるテレビコントロールを許可
;パラメータなし

6.9. OPT.2 キーによるテレビコントロール機能を無効にする($0B)

IOCS コール $0B は、OPT.2 キーによるテレビコントロール機能を無効にします。

;IOCS _OPT2TVOFF
;$0B OPT.2キーによるテレビコントロールを禁止
;パラメータなし

6.10. テキストパレットの 16 色すべてに異なる色を設定する($14)

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      エラー(パレットコードの指定がおかしい)
;                               その他  カラーコード

6.11. マウスデータ受信処理アドレスを設定する($36)

IOCS コール $36 は、SCC チャンネル B の割り込みルーチンでマウスデータの 3 バイト目の受信が完了すると呼び出されるマウス受信データ処理ルーチンの先頭アドレス [$0938.w].l を設定します。マウス受信データ処理ルーチンは、3 バイトのマウスデータが格納されているワークエリアの先頭アドレスが a1 レジスタに設定された状態で呼び出されます。通常はマウスデータから IOCS のワークエリアを更新するルーチンが設定されています。むやみに変更してはいけません。

;IOCS _MS_VCS
;$36 マウス受信データ処理の設定
;_MS_INITでもシステム規定の処理ルーチンが設定されるので_MS_INITの後に指定すること
;<d1.l:マウス受信データ処理アドレス(マウスカーソル)
;       0       システム規定の処理ルーチンに戻す
;<d2.w:マウスデータ受信タイマー初期値
;       システム規定の処理ルーチンのときは無効

6.12. テキスト表示の拡張エスケープシーケンス処理アドレスを設定する($37)

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

;IOCS _EXESC
;$37 拡張ESCシーケンス処理ルーチンの設定
;<d1.l:拡張ESCシーケンス処理ルーチンのアドレス(0=解除)

6.13. 外字フォントアドレスを設定する($38)

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      エラー

6.14. BEEP の ADPCM データの先頭アドレスと長さを設定する($39)

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

6.15. IOCS レベルでプリンタの設定を行う($3A)

IOCS コール $3A は、プリンタ環境([$0A16.w]~[$0A79.w])をまとめて設定します。設定されるデータには、漢字モードの ON/OFF、ハードコピーのときに使用するビットイメージ出力モードの ON/OFF、改行幅の変更などの制御コードが含まれています。

;IOCS _SETPRN
;$3A プリンタ環境の設定
;<a1.l:環境のアドレス(0=標準環境を設定)
;                       標準値          内容
;       0000    .l      $00E00000       ハードコピーの先頭アドレス
;       0004    .w      $0029           (SHIFT+COPYのハードコピー範囲のY方向ドット数/24)-1
;       0006    .l      $00FFFF00
;       000A    .w      $0014           (COPYのハードコピー範囲のY方向ドット数/24)-1
;       000C    .l      $00FF0000
;       0010    .w      $005F           ハードコピー範囲のX方向ドット数-1
;       0012    .b[8]   $06,$1B,'K',$1C,'S',$06,$06,$00
;                                       漢字モードにして漢字左右スペースをそれぞれ6にする
;       001A    .b[4]   $02,$1B,'H',$00 漢字モードの解除
;       001E    .b[4]   $00,$00,$00,$00
;       0022    .b[4]   $02,$0D,$0A,$00 改行
;       0026    .b[6]   $04,$1B,'%','9',$0F,$00
;                                       改行幅を1/8インチに設定
;       002C    .b[6]   $04,$1B,'%','9',$00,$00
;                                       改行幅を元に戻す
;       0032    .b[6]   $04,$1B,'%','9',$0A,$00
;                                       改行幅を1/12インチに設定
;       0038    .b[6]   $04,$1B,'%','9',$05,$00
;                                       改行幅を1/24インチに設定
;       003E    .b[8]   $04,$1B,'J',$06,$00,$00,$00,$00
;                                       24ドットビットイメージ1536*3データ
;       0046    .b[8]   $04,$1B,'J',$03,$00,$00,$00,$00
;                                       24ドットビットイメージ768*3データ
;       004E    .b[8]   $04,$1B,'J',$00,$12,$00,$00,$00
;                                       24ドットビットイメージ18*3データ
;       0056    .b[8]   $04,$1B,$4A,$00,$24,$00,$00,$00
;                                       24ドットビットイメージ36*3データ
;       005E    .b      $00             ビットイメージの出力方向($00=ノーマル,$FF=リバース)
;       005F    .b      $03
;       0060    .b      $06
;       0061    .b      $01             文字コード/ビットイメージ出力フラグ
;                                       bit0    $7600~(外字)
;                                       bit1    $2C00~$2DFF(外字)
;                                       bit2    $5000~$75FF(第2水準)
;                                       bit3    $2E00~$4FFF(第1水準)
;                                       bit4    $20~$7F,$A0~$DF(半角)
;                                               0       コード出力
;                                               1       ビットイメージ出力
;       (98バイト)

6.16. CRTC とビデオコントローラを操作してグラフィック画面のモードを設定する($91)

IOCS コール $91 は、IOCS コール $10(CRTMOD)の設定に関係なく CRTC とビデオコントローラを直接操作してグラフィック画面のモード(色数と実画面サイズ)を設定します。

;IOCS _G_MOD
;$91 グラフィック画面モードの設定
;<d1.b:グラフィック画面モード
;       -1      取得のみ
;       bit0~1         グラフィック色数
;                               0       16色
;                               1       256色
;                               2       65536色
;                               3       禁止
;       bit2            グラフィック実画面サイズ
;                               0       512×512ドット
;                               1       1024×1024ドット
;>d0.l:変更前のグラフィック画面モード

6.17. ビデオコントローラを操作してプライオリティを設定する($92)

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:変更前のプライオリティ

6.18. ビデオコントローラを操作して特殊モードを設定する($93)

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:手前の2枚のグラフィックページ間で半透明
;               bit10   B/P:GRAMのbit0で特殊モード領域指定
;               bit11   H/P:0=特殊プライオリティ,1=半透明
;               bit12   EX特殊プライオリティまたは半透明
;               bit13   VHT:グラフィック,ビデオ間
;               bit14   AH:グラフィック,テキスト間で半透明
;               bit15   Ys:CMPCUT(Ys)信号を強制的にHにする
;>d0.w:変更前の画面表示のON/OFFと特殊モードの設定

6.19. ペンカラーを設定する($95)

IOCS コール $95 は、グラフィック画面にビットパターンを書き込む IOCS コール $9AIOCS コール $9BIOCS コール $9C で使用するペンカラーを設定します。

;IOCS _PENCOLOR
;$95 ペンカラーの設定
;<d1.w:ペンカラー

6.20. 描画ページを設定する($96)

IOCS コール $96 は、グラフィック描画ページを設定します。IOCS コール $B1 との違いは、描画ページを取得する機能がないこととエラーチェックを行わないこと。

;IOCS _SET_PAGE
;$96 グラフィック描画ページの設定
;<d1.w:グラフィック描画ページ(0~3)

6.21. グラフィック画面からパターンを読み出す($97)

IOCS コール $97 は、グラフィック画面からパターンを読み出します。パターンデータはパレットコードを詰めて並べます。

;IOCS _GGET
;$97 グラフィック画面からパターン読み出し
;<d1.w:X座標
;<d2.w:Y座標
;<a1.l:バッファアドレス
;<      0000    .w      X方向のドット数
;<      0002    .w      Y方向のドット数
;>      0004    .w      色モード($000F=16色,$00FF=256色,$FFFF=65536色)
;>      0006            パターン(16色のときは1バイトに2ドット分格納される)

6.22. グラフィック画面にパターンを書き込む(スルーカラー指定)($98)

IOCS コール $98 は、グラフィック画面にパターンを書き込みます。パターンデータはパレットコードを詰めて並べます。スルーカラーは書き込みません。

;IOCS _MASK_GPUT
;$98 グラフィック画面にパターン書き込み(スルーカラー指定)
;スルーカラーは書き込まない
;<d1.w:X座標
;<d2.w:Y座標
;<d3.w:スルーカラー
;<a1.l:バッファアドレス
;<      0000    .w      X方向のドット数
;<      0002    .w      Y方向のドット数
;<      0004    .w      色モード($000F=16色,$00FF=256色,$FFFF=65536色)
;                       現在のグラフィック画面モードと一致していなければ書き込まない
;<      0006            パターン(16色のときは1バイトに2ドット分格納する)
;>d0.l:エラーコード
;       0       正常終了
;       -1      色モードが違う

6.23. グラフィック画面にパターンを書き込む($99)

IOCS コール $99 は、グラフィック画面にパターンを書き込みます。パターンデータはパレットコードを詰めて並べます。

;IOCS _GPUT
;$99 グラフィック画面にパターン書き込み
;<d1.w:X座標
;<d2.w:Y座標
;<a1.l:バッファアドレス
;<      0000    .w      X方向のドット数
;<      0002    .w      Y方向のドット数
;<      0004    .w      色モード($000F=16色,$00FF=256色,$FFFF=65536色)
;                       現在のグラフィック画面モードと一致していなければ書き込まない
;<      0006            パターン(16色のときは1バイトに2ドット分格納する)
;>d0.l:エラーコード
;       0       正常終了
;       -1      色モードが違う

6.24. グラフィック画面にビットパターンを書き込む($9A)

IOCS コール $9A は、グラフィック画面にビットパターンを書き込みます。ビットが 0 のピクセルは変更せす、1 のピクセルに IOCS コール $95 で設定したペンカラーを書き込みます。

;IOCS _GPTRN
;$9A グラフィック画面にビットパターン書き込み
;<d1.w:X座標
;<d2.w:Y座標
;<a1.l:バッファアドレス
;<      0000    .w      X方向のドット数
;<      0002    .w      Y方向のドット数
;<      0004            ビットパターン(0=変化しない,1=ペンカラーで描画)
;                       X方向の余ったビットはバイト単位で切り捨てる

6.25. グラフィック画面にビットパターンを書き込む(バックカラー指定)($9B)

IOCS コール $9B は、グラフィック画面にビットパターンを書き込みます。ビットが 0 のピクセルにバックカラーを書き込み、1 のピクセルに IOCS コール $95 で設定したペンカラーを書き込みます。

;IOCS _BK_GPTRN
;$9B グラフィック画面にビットパターン書き込み(バックカラー指定)
;<d1.w:X座標
;<d2.w:Y座標
;<d3.w:バックカラー
;<a1.l:バッファアドレス
;<      0000    .w      X方向のドット数
;<      0002    .w      Y方向のドット数
;<      0004            ビットパターン(0=バックカラーで描画,1=ペンカラーで描画)
;                       X方向の余ったビットはバイト単位で切り捨てる

6.26. グラフィック画面にビットパターンを書き込む(拡大指定)($9C)

IOCS コール $9C は、グラフィック画面にビットパターンを整数倍に拡大して書き込みます。ビットが 0 のピクセルは変更せす、1 のピクセルに IOCS コール $95 で設定したペンカラーを書き込みます。

;IOCS _X_GPTRN
;$9C グラフィック画面にビットパターン書き込み(拡大指定)
;<d1.w:X座標
;<d2.w:Y座標
;<d3.w:X方向拡大率(1~1023)
;<d4.w:Y方向拡大率(1~1023)
;<a1.l:バッファアドレス
;<      0000    .w      X方向のドット数
;<      0002    .w      Y方向のドット数
;<      0004            ビットパターン(0=変化しない,1=ペンカラーで描画)
;                       X方向の余ったビットはバイト単位で切り捨てる

7. 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 が起動します。X68000 XVI よりも前の機種(ROM 1.0)には ROM ディスク が入っていてターミナルモードになります。

8. ROM ディスク

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

X68000 XVI よりも前の機種で 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 ディスク関連の情報(X68000 XVI よりも前の機種)
アドレスサイズ初期値内容
$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 領域に使用するセクタ数

9. ROM デバッガ

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

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

9.1. CONFIG.SYS で組み込む方法

ROM デバッガを組み込む(ROMDB=ON)

9.2. SWITCH.X で組み込む方法(次回起動時に組み込まれる)

ROM デバッガを ON/OFF する(DEBUG=~)

9.3. OPT.2 キーで組み込む方法(起動時に OPT.2 キーを押していると組み込まれる)

ROM デバッガを有効にして起動(OPT.2 キー)

9.4. ROM デバッガを組み込むコード

ROM のバージョンによって 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:

10. SWITCH.X の未公開機能

10.1. ROM デバッガを ON/OFF する(DEBUG=~)

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

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

>switch debug=on

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

>switch debug=off

11. SX-WINDOW 関連の未公開機能

11.1. エンドファイルメンテ

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

12. TIMER.X の未公開機能

12.1. TIMER.X の常駐を解除する(/KILL)

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

12.2. 指定した時刻に指定したプログラムを実行する(/X~)

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

13. X-BASIC の未公開機能

13.1. ADPCM の再生を再開する(a_cont())

a_cont() は a_stop() で中断した ADPCM の再生を再開します。

13.2. ADPCM の再生を中止する(a_end())

a_end() は ADPCM の再生を中止します。

13.3. ADPCM の再生中か調べる(a_stat())

a_stat() は ADPCM の再生中ならば 2 を、さもなくば 0 を返します。

13.4. ADPCM の再生を中断する(a_stop())

a_stop() は ADPCM の再生を中断します。a_cont() で再開できます。

13.5. キーボードから 1 文字待たずに入力する(inkey$(0))

inkey$(0) はキーボードから入力された 1 文字を返します。inkey$ と違い、入力がないときは待たずに "" を返します。返した文字はキー入力バッファから取り除かれます。

13.6. キー入力バッファが空か調べる(keysns())

keysns() はキー入力バッファが空のとき 0 を、空ではないとき -1 を返します。キー入力バッファは変化しません。

13.7. トラックバッファの先頭アドレスを返す(m_atoi(t))

m_atoi(t) はトラック t のトラックバッファの先頭アドレスを返します。

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

14.1. 拡張メモリボードのスーパーバイザ保護機能

拡張メモリボード 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 が対応していないためにこの機能を持っていません。

メモ

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

15. キーボードの未公開機能

15.1. キーボードのクリスマスツリー(F1+F2+F3)

「F1」「F2」「F3」の 3 つのキーを押しながらキーボードを X68k 本体に接続すると、キーボードの LED がランダム(に見えるよう)な順序で点滅します。

コネクタを繋ぎなおさなければ普通に入力できません。

動作条件

X68k の全機種のキーボードで動作します。

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

15.2. キーボードのルーレット(記号入力 + 登録 +HELP)

「記号入力」「登録」「HELP」の 3 つのキーを押しながらキーボードを X68k 本体に接続すると、キーボードのすべての LED が 5 回点滅してから、「ひらがな」→「全角」→「かな」→「ローマ字」→「コード入力」→「CAPS」→「INS」→「ひらがな」の順序で LED が繰り返し点滅します。

BREAK キーを押すと普通に入力できる状態になります。

動作条件

X68k の全機種のキーボードで動作します。

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

15.3. キーボードのデバッグモード(かな + ローマ字 + コード入力)

「かな」「ローマ字」「コード入力」の 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---

動作条件

X68k の全機種のキーボードで動作します。

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

15.4. Compact のキーボードの未公開制御コード

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

$44

NUM キーの LED を消灯します。

$45

NUM キーの LED を点灯します。

$47

スキャンコードとして $FE を返します。Compact 以外のキーボードは $47 を送出しても何も返さないので、この制御コードを使うことで接続されているキーボードが Compact のキーボードかどうかをソフトウェアで判別することができます。

KeyWitch.X は、ハード的な誤入力を回避するために必要なキーボードマトリクスを決定するために、この制御コードを使ってキーボードの種類を見分けています。

$48

キー入力禁止モードにします。$49 を送出するか、SHIFT+CTRL+OPT.2 を押すか、コネクタを繋ぎなおすまで、キーボードが使えなくなります。

$49

キー入力禁止モードを解除します。

動作条件

Compact のキーボードであること。

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

16.1. SRAM の初期化(CLR キー)

X68000 XVI 以降の機種(ROM 1.1 以降)では、CLR キーを押しながら電源 ON またはリセットすると画面に

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

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

補足

X68000 XVI よりも前の機種(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 バイト)だけが初期化されます。

ぺけ -BASIC もデバッガも持ってこれない場合は、COMMAND.X が動いていて書き込めるディスクがあれば、次のコマンドを実行することで SRAM の全体をゼロクリアできます。

>echo ケD2Dp~F@NO(@CヤH{@\(_PワQワ${@T&{@T`V`&`F01(JユハユフRJ(KラヒラヒラフSK6シ110;@62;@2ミ@ミABZS@dメ6シ22p~F@NOBCRCニ;2ナgタBAVApャNONuU、UU3aニiオU`ョ>a.r
>a

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

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

16.2. 画面モードを VGA モードにして起動(V キー)

X68000 Compact(ROM 1.2)以降では、V キーを押しながら電源 ON またはリセットすると、画面モードが VGA モード(モード $13)になります。純正の液晶ディスプレイなどで使用します。

16.3. 画面モードを標準モードにして起動(N キー)

X68000 Compact(ROM 1.2)以降では、N キーを押しながら電源 ON またはリセットすると、画面モードが標準モード(モード $10)になります。VGA モードを解除するときに使います。

16.4. ROM デバッガを組み込んで起動(OPT.2 キー)

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

16.5. X68030 を 10MHz の X68000 相当の動作速度で起動(XF1 キー)

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

16.6. X68030 を 16MHz の X68000 相当の動作速度で起動(XF2 キー)

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

16.7. X68030 を 10MHz の X68000 相当の動作速度で Human68k v2.15 を起動(XF3 キー)

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

16.8. X68030 を 16MHz の X68000 相当の動作速度で Human68k v2.15 を起動(XF4 キー)

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

16.9. X68030 で Human68k v2.15 を起動(XF5 キー)

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

16.10. フロッピーディスクのイジェクト(CTRL キー)

CTRL キーを押しながら電源 ON またはリセットすると、フロッピーディスクがセットされていても読まずにイジェクトされます。

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

16.11. SRAM のブートデバイスの設定を無視して標準(STD)で起動(OPT.1 キー)

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

標準(STD)のブートデバイスの検索順序は以下の通り

  1. フロッピーディスク(ドライブ 0→ドライブ 1→ドライブ 2→ドライブ 3)
  2. SASI または SCSI(内蔵インタフェイス)
  3. ROM(拡張 SCSI ボードを含む)
  4. SRAM

16.12. ハードディスクのパーティションを選択して起動(HELP キー)

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


更新履歴

2022 年 4 月 6 日

指定したアドレスを呼び出してデバイスドライバを組み込む(DEVICE=[ROM~]) の DEVICE= が抜けていました。

X-BASIC の未公開機能 を追加しました。

2022 年 2 月 19 日

SRAM の初期化(CLR キー) の補足に COMMAND.X で SRAM の全体をゼロクリアする方法を追記しました。

2019 年 12 月 17 日

ROM デバッガ。CONFIG.SYS は ROMDB=ON で SWITCH.X は DEBUG=ON。

── 続きを読む ──── 続きを隠す ──

2018 年 10 月 23 日

https://stdkmd.net/udcx68k/ に引っ越しました。

2015 年 4 月 13 日

http://stdkmd.com/udcx68k/ に引っ越し。IOCS コール $95~$9C を追加。FORMAT.X /4 /I を追加。

2014 年 5 月 16 日

V キーと N キーは X68000 Compact から。

2003 年 11 月 15 日

IOCS $09~$93 を追加。

2002 年 6 月 19 日

更新。

2001 年 6 月 9 日

更新。

2001 年 5 月 31 日

更新。

2001 年 1 月 17 日

更新。

2000 年 11 月 22 日

更新。

2000 年 10 月 25 日

更新。

2000 年 10 月 18 日

公開。