If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
X68k/IOCS: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
{{subpage|game=Sharp X68000}} | |||
<pre> - IOCS CALL MANUAL - | |||
============================================================================== | ============================================================================== | ||
Line 3,626: | Line 3,627: | ||
============================================================================== | ============================================================================== | ||
</ | </pre> |
Latest revision as of 02:42, 24 January 2024
This is a sub-page of X68k.
- IOCS CALL MANUAL - ============================================================================== ・IOCSコール一覧 $00 _B_KEYINP キーデータの読み込み $01 _B_KEYSNS キーの入力検査 $02 _B_SFTSNS シフトキー状態の収得 $03 _KEY_INIT 入力関係の初期化 $04 _BITSNS キー状態の収得 $05 _SKEYSET キー入力の発生 $06 _LEDCTRL キーボード LED の設定 $07 _LEDSET キーボード LED をキー入力モードに合わせる $08 _KEYDLY キーリピートの開始時間設定 $09 _KEYREP キーリピートの間隔設定 $0a (未公開) OPT.2 によるテレビコントロール許可 $0b (未公開) OPT.2 によるテレビコントロール禁止 $0c _TVCTRL テレビコントロール $0d _LEDMOD LED モードの設定 $0e _TGUSEMD 画面の使用状態の設定 $0f _DEFCHR 外字定義 $10 _CRTMOD CRT モード設定 $11 _CONTRAST コントラスト設定 $12 _HSVTORGB HSV→RGB 変換 $13 _TPALET テキストパレット設定 $14 _TPALET2 テキストパレット独立設定 $15 _TCOLOR テキストプレーン指定 $16 _FNTADR フォントアドレスの収得 $17 _VRAMGET テキスト VRAM のバイト単位読み込み $18 _VRAMPUT テキスト VRAM のバイト単位書き込み $19 _FNTGET フォント読み込み $1a _TEXTGET テキスト VRAM のドット単位読み込み $1b _TEXTPUT テキスト VRAM のドット単位書き込み $1c _CLIPPUT テキスト VRAM のドット単位書き込み(クリッピング処理あり) $1d _SCROLL 表示座標の設定 $1e _B_CURON カーソル一時停止解除 $1f _B_CUROFF カーソル一時停止 $20 _B_PUTC 文字表示 $21 _B_PRINT 文字列表示 $22 _B_COLOR 表示色設定 $23 _B_LOCATE カーソル移動 $24 _B_DOWN_S カーソルを 1 行下に移動 $25 _B_UP_S カーソルを 1 行上に移動 $26 _B_UP カーソルを指定行数だけ上に移動 $27 _B_DOWN カーソルを指定行数だけ下に移動 $28 _B_RIGHT カーソルを指定桁数だけ右に移動 $29 _B_LEFT カーソルを指定桁数だけ左に移動 $2a _B_CLR_ST 画面の複数行消去 $2b _B_ERA_ST 現在行の複数桁消去 $2c _B_INS 複数行挿入 $2d _B_DEL 複数行削除 $2e _B_CONSOL 表示範囲設定 $2f _B_PUTMES 座標指定文字列表示 $30 _SET232C RS-232C パラメータ設定 $31 _LOF232C RS-232C 受信バッファのデータ数を求める $32 _INP232C RS-232C 受信データを得る $33 _ISNS232C RS-232C 受信データの検査 $34 _OSNS232C RS-232C データが送信可能か検査する $35 _OUT232C RS-232C データ送信 $36 (未公開) マウスデータ受信時の処理アドレス設定 $37 (未公開) ESC[>系エスケープシーケンスの拡張処理アドレス設定 $38 _SETFNTADR 外字フォントアドレス設定 $39 (未公開) BEEP音用PCMのデータ設定 $3a (未公開) プリンタパラメータ設定 $3b _JOYGET ジョイスティック入力 $3c _INIT_PRN プリンタ初期化 $3d _SNSPRN プリンタに出力可能か検査する $3e _OUTLPT プリンタ直接出力 $3f _OUTPRN プリンタ出力 $40 _B_SEEK ディスクのシーク $41 _B_VERIFY ディスクのベリファイ $42 _B_READDI ディスクの診断の為の読み出し $43 _B_DSKINI ドライブの初期化 $44 _B_DRVSNS ドライブの状態検査 $45 _B_WRITE ディスクへの書き込み $46 _B_READ ディスクからの読み込み $47 _B_RECALI ディスクのリキャリブレイト $48 _B_ASSIGN ハードディスクの代替トラック設定 $49 _B_WRITED 2HD への破損データ書き込み $4a _B_READID 2HD の ID 情報の読み出し $4b _B_BADFMT ハードディスクの破損トラックを使用不能にする $4c _B_READDL 2HD からの破損データ読み込み $4d _B_FORMAT ディスクのフォーマット $4e _B_DRVCHK 2HD ドライブの状態設定 $4f _B_EJECT ディスクのイジェクト/シッピング $50 _DATEBCD 日付データのバイナリ→BCD 変換 $51 _DATESET 日付の設定 $52 _TIMEBCD 時刻データのバイナリ→BCD 変換 $53 _TIMESET 時刻の設定 $54 _DATEGET 日付の読み込み $55 _DATEBIN 日付データの BCD→バイナリ変換 $56 _TIMEGET 時刻の読み込み $57 _TIMEBIN 時刻データの BCD→バイナリ変換 $58 _DATECNV 日付データの文字列→バイナリ変換 $59 _TIMECNV 時刻データの文字列→バイナリ変換 $5a _DATEASC 日付データのバイナリ→文字列変換 $5b _TIMEASC 時刻データのバイナリ→文字列変換 $5c _DAYASC 曜日データのバイナリ→文字列変換 $5d _ALARMMOD アラーム許可/禁止 $5e _ALARMSET アラーム設定 $5f _ALARMGET アラームの設定状態を収得 $60 _ADPCMOUT ADPCM 出力 $61 _ADPCMINP ADPCM 入力 $62 _ADPCMAOT ADPCM 出力(アレイチェーン) $63 _ADPCMAIN ADPCM 入力(アレイチェーン) $64 _ADPCMLOT ADPCM 出力(リンクアレイチェーン) $65 _ADPCMLIN ADPCM 入力(リンクアレイチェーン) $66 _ADPCMSNS ADPCM 状態検査 $67 _ADPCMMOD ADPCM 実行制御 $68 _OPMSET OPM レジスタ設定 $69 _OPMSNS OPM 状態検査 $6a _OPMINTST OPM 割り込み設定 $6b _TIMERDST Timer-D 割り込み設定 $6c _VDISPST 垂直同期割り込み設定 $6d _CRTCRAS ラスター割り込み設定 $6e _HSYNCST 水平同期割り込み設定 $6f _PRNINTST プリンタ割り込み設定 $70 _MS_INIT マウス初期化 $71 _MS_CURON マウスカーソル表示 $72 _MS_CUROF マウスカーソル消去 $73 _MS_STAT マウスカーソルの表示状態を調べる $74 _MS_GETDT マウス移動量/ボタン状態を調べる $75 _MS_CURGT マウスカーソルの座標収得 $76 _MS_CURST マウスカーソルの座標設定 $77 _MS_LIMIT マウスカーソルの移動範囲設定 $78 _MS_OFFTM マウスのボタンを離すまでの時間を調べる $79 _MS_ONTM マウスのボタンを押すまでの時間を調べる $7a _MS_PATST マウスカーソルのパターン定義 $7b _MS_SEL マウスカーソルのパターン選択 $7c _MS_SEL2 マウスカーソルのアニメーション $7d _SKEY_MOD ソフトキーボード制御 $7e _DENSNS 電卓制御 $7f _ONTIME 起動後の経過時間を調べる $80 _B_INTVCS ベクタ設定 $81 _B_SUPER スーパーバイザ/ユーザモードの切り換え $82 _B_BPEEK 指定アドレスから 1 バイト読み込み $83 _B_WPEEK 指定アドレスから 1 ワード読み込み $84 _B_LPEEK 指定アドレスから 1 ロングワード読み込み $85 _B_MEMSTR 指定アドレスから複数バイト読み込み $86 _B_BPOKE 指定アドレスヘ 1 バイト書き込み $87 _B_WPOKE 指定アドレスヘ 1 ワード書き込み $88 _B_LPOKE 指定アドレスヘ 1 ロングワード書き込み $89 _B_MEMSET 指定アドレスヘ複数バイト書き込み $8a _DMAMOVE DMA 転送 $8b _DMAMOV_A DMA 転送(アレイチェーン) $8c _DMAMOV_L DMA 転送(リンクアレイチェーン) $8d _DMAMODE DMA 状態検査 $8e _BOOTINF 起動情報を得る $8f _ROMVER ROM バージョンを得る $90 _G_CLR_ON グラフィック画面の初期化及び表示モードの設定 $91 (未公開) グラフィック画面モードの設定 $92 (未公開) プライオリティ設定 $93 (未公開) 画面表示及び特殊モードの設定 $94 _GPALET グラフィックパレット設定 $95 (未公開) カラーコード設定 $96 (未公開) アクセスページ設定 $97 (未公開) グラフィック VRAM のドット単位読み込み $98 (未公開) グラフィック VRAM のドット単位書き込み(色マスクあり) $99 (未公開) グラフィック VRAM のドット単位書き込み $9a (未公開) グラフィック VRAM のビットパターン書き込み $9b (未公開) グラフィック VRAM のビットパターン書き込み(バックカラーあり) $9c (未公開) グラフィック VRAM のビットパターン拡大書き込み $a0 _SFTJIS S-JIS→JIS コード変換 $a1 _JISSFT JIS→S-JIS コード変換 $a2 _AKCONV ANK→S-JIS コード変換 $a3 _RMACNV ローマ字→ANK カナ変換 $a4 _DAKJOB 濁点処理 $a5 _HANJOB 半濁点処理 $ac _SYS_STAT システム状態の設定 $ad _B_CONMOD カーソルおよびスクロールの設定 $ae _OS_CURON カーソル表示 $af _OS_CUROF カーソル消去 $b0 _DRAWMODE グラフィック描画モードの設定 $b1 _APAGE グラフィック描画ページの設定 $b2 _VPAGE グラフィック画面表示ページの設定 $b3 _HOME グラフィック画面の表示位置設定 $b4 _WINDOW グラフィック描画ウィンドウの設定 $b5 _WIPE グラフィック画面のクリア $b6 _PSET グラフィック画面のポイントセット $b7 _POINT グラフィック画面のポイントゲット $b8 _LINE グラフィック画面のライン $b9 _BOX グラフィック画面のボックス $ba _FILL グラフィック画面のボックスフィル $bb _CIRCLE グラフィック画面のサークル $bc _PAINT グラフィック画面のペイント $bd _SYMBOL グラフィック画面のシンボル $be _GETGRM グラフィック画面のドット単位読み込み $bf _PUTGRM グラフィック画面のドット単位書き込み $c0 _SP_INIT スプライト初期化 $c1 _SP_ON スプライト表示 $c2 _SP_OFF スプライト消去 $c3 _SP_CGCLR スプライトパターンのクリア $c4 _SP_DEFCG スプライトパターンの定義 $c5 _SP_GTPCG スプライトパターンの読み込み $c6 _SP_REGST スプライトレジスタの設定 $c7 _SP_REGGT スプライトレジスタの読み出し $c8 _BGSCRLST バックグラウンドスクロールレジスタの設定 $c9 _BGSCRLGT バックグラウンドスクロールレジスタの読み出し $ca _BGCTRLST バックグラウンドコントロールレジスタの設定 $cb _BGCTRLGT バックグラウンドコントロールレジスタの読み出し $cc _BGTEXTCL バックグラウンドテキストのクリア $cd _BGTEXTST バックグラウンドテキストの設定 $ce _BGTEXTGT バックグラウンドテキストの読み出し $cf _SPALET スプライトパレットの設定 $d3 _TXXLINE テキスト画面の水平ライン $d4 _TXYLINE テキスト画面の垂直ライン $d5 _TXLINE テキスト画面のライン $d6 _TXBOX テキスト画面のボックス $d7 _TXFILL テキスト画面のボックスフィル $d8 _TXREV テキスト画面の反転 $df _TXRASCPY テキスト画面のラスターコピー $f0 _OPMDRV OPMDRV 制御 $f1 _RSDRV 拡張 RS-232C 制御 $f2 _A_JOYGET アナログジョイスティック制御 $f3 _MUSICDRV MUSICDRV 制御 $f5 _SCSIDRV SCSI IOCS $fd _ABORTRST アボートする為に環境を再設定する $fe _IPLERR 再起動する $ff _ABORTJOB アボート ============================================================================== ・キーのスキャンコード キーコード キー入力状態ビット グループ 7 6 5 4 3 2 1 0 0 6& 5% 4$ 3# 2" 1! ESC 1 BS \| ^~ -= 0 9) 8( 7' 2 U Y T R E W Q TAB 3 S A CR [{ @` P O I 4 ;+ L K J H G F D 5 N B V C X Z ]} :* 6 DEL HOME SPACE _ /? .> ,< M 7 CLR ↓ → ↑ ← UNDO R_DOWN R_UP 8 4 + 9 8 7 - * / 9 0 ENTER 3 2 1 = 6 5 a XF3 XF2 XF1 HELP 登録 記号 . , b ひら INS CAPS コード ロ-マ字 かな XF5 XF4 c F4 F3 F2 F1 F0 COPY BREAK 全角 d F9 F8 F7 F6 F5 e OPT.2 OPT.1 CTRL SHIFT スキャンコード = キーコードグループ×8+キー入力状態ビット 10:TAB 20:D 30:M 40:/ 50:, 60:全角 70:SHIFT 01:ESC 11:Q 21:F 31:,< 41:* 51:. 61:BREAK 71:CTRL 02:1! 12:W 22:G 32:.> 42:- 52:記号 62:COPY 72:OPT.1 03:2" 13:E 23:H 33:/? 43:7 53:登録 63:F0 73:OPT.2 04:3# 14:R 24:J 34:_ 44:8 54:HELP 64:F1 05:4$ 15:T 25:K 35:SPACE 45:9 55:XF1 65:F2 06:5% 16:Y 26:L 36:HOME 46:+ 56:XF2 66:F3 07:6& 17:U 27:;+ 37:DEL 47:4 57:XF3 67:F4 08:7' 18:I 28::* 38:R_UP 48:5 58:XF4 68:F5 09:8( 19:O 29:]} 39:R_DOWN 49:6 59:XF5 69:F6 0a:9) 1a:P 2a:Z 3a:UNDO 4a:= 5a:かな 6a:F7 0b:0 1b:@` 2b:X 3b:← 4b:1 5b:ロ-マ字 6b:F8 0c:-= 1c:[{ 2c:C 3c:↑ 4c:2 5c:コ-ド 6c:F9 0d:^~ 1d:CR 2d:V 3d:→ 4d:3 5d:CAPS 0e:\| 1e:A 2e:B 3e:↓ 4e:ENTER 5e:INS 0f:BS 1f:S 2f:N 3f:CLR 4f:0 5f:ひらがな ============================================================================== ============================================================================== $00 _B_KEYINP キーデータの読み込み 返値 キーデータ d0.hb スキャンコード d0.b ASCII コード キーデータを読み込む. キーが入力されていなければ入力されるまで待つ. SHIFT,CTRL,OPT.1,OPT.2 については、離した時にもスキャンコードに $80 を 足した値を返す. ASCII コードは SHIFT,CTRL,かな,CAPS により変化し、また ASCII 文字が定義 されていない場合は 0 になる. 通常テレビコントロールに割り当てられているキーは入力されないが、押し下げ 状態には反映される. ============================================================================== $01 _B_KEYSNS キーの入力検査 返値 d0.l = 0 キー入力なし $1_???? 〃 あり($???? はキーデータ) キーが入力されているか調べる. キーデータバッファの内容は変化しない. ============================================================================== $02 _B_SFTSNS シフトキー状態の収得 返値 d0.l シフトキーの状態 bit 14 全角 bit 13 ひらがな bit 12 INS bit 11 CAPS bit 10 コード入力 bit 9 ローマ字 bit 8 かな bit 7 CAPS bit 6 コード入力 bit 5 ローマ字 bit 4 かな bit 3 OPT.2 bit 2 OPT.1 bit 1 CTRL bit 0 SHIFT bit 7~0 はキーが実際に押されている(1)か押されていない(0)か、 bit 14~8 は LED が点灯(1)しているか消灯(0)しているかを表す. シフトキーの状態を調べる. ============================================================================== $03 _KEY_INIT 入力関係の初期化 引数 d1.b LED キーモード初期値 キーボードバッファをクリアし、LED モードを初期化する. この IOCS コール は ROM 起動時に使用されるので、一般のアプリケーションからは使用禁止. ROM IOCS では、ショートカットで呼び出すと割り込みが全て許可された状態 で帰るので注意すること. ============================================================================== $04 _BITSNS キー状態の収得 引数 d1.w キーコードグループ(0~$f) 返値 d0.b キーの押し下げ状態 指定したキーコードグループに含まれるキーの押し下げ状態をビット単位で 調べる. 対応するビットが 1 でキーが押されていることを示す. ============================================================================== $05 _SKEYSET キー入力の発生 引数 d1.l スキャンコード bit 7 0:キーを押す 1:キーを離す bit 6~0 スキャンコード 指定したキーの入力をソフト的に発生させる. ============================================================================== $06 _LEDCTRL キーボード LED の設定 引数 d1.b キーボード LED 状態 bit 6 全角 bit 5 ひらがな bit 4 INS bit 3 CAPS bit 2 コード入力 bit 1 ローマ字 bit 0 かな キーボード LED のモードを設定する. キー入力モードは変更されない. ============================================================================== $07 _LEDSET キーボード LED をキー入力モードに合わせる キーボード LED のモードをキー入力モードに合わせる. ============================================================================== $08 _KEYDLY キーリピートの開始時間設定 引数 d1.b キーリピート開始時間(0~15) キーリピート開始までの時間を (200+100×d1.b)ms に設定する. ============================================================================== $09 _KEYREP キーリピートの間隔設定 引数 d1.b キーリピート間隔(0~15) キーリピートの間隔を (30+5×d1.b・)ms に設定する. ============================================================================== $0a (未公開) OPT.2 によるテレビコントロール許可 OPT.2 によるテレビコントロールを許可する. ROM IOCS では、d0.b に $0a がセットされた状態で呼び出さないと正常動作 しないので注意すること. ============================================================================== $0b (未公開) OPT.2 によるテレビコントロール禁止 OPT.2 によるテレビコントロールを禁止する. ROM IOCS では、d0.b に $0b がセットされた状態で呼び出さないと正常動作 しないので注意すること. ============================================================================== $0c _TVCTRL テレビコントロール 引数 d1.l テレビコントロールコード d1.l = $01 ボリュームアップ $02 〃 ダウン $03 〃 標準 $04 チャンネルコール $05 テレビ画面(リセット) $06 音声ミュート $07 電源オン $08 テレビ/コンピュータ画面切り替え $09 テレビ/外部入力の切り替え若しくはコンピュータ表示モードの変更 $0a コントラスト標準 $0b チャンネルアップ $0c 〃 ダウン $0d 電源オフ $0e 電源オン/オフ切り替え $0f スーパーインポーズ及びコントラストダウン/標準切り替え $10 チャンネル 1 $11 〃 2 $12 〃 3 $13 〃 4 $14 〃 5 $15 〃 6 $16 〃 7 $17 〃 8 $18 〃 9 $19 〃 10 $1a 〃 11 $1b 〃 12 $1c テレビ画面($05) $1d コンピュータ画面($05+$08) $1e スーパーインポーズ及びコントラストダウン($05+$0f) $1f スーパーインポーズ及びコントラスト標準($05+$0f+$0a) +$20 電源オン($07)後、上記の機能を実行 返値 d1.w は破壊される. ディスプレイを制御する. ============================================================================== $0d _LEDMOD LED モードの設定 引数 d1.l LED キーの番号 d1.l = 0 かな 1 ローマ字 2 コード入力 3 CAPS 4 INS 5 ひらがな 6 全角 d2.b ON/OFF の指定(0:OFF 1:ON) 返値 d0.l = 0 正常終了 -1 エラー(キー番号が大きすぎる) キーボード LED とキー入力モードを設定する. ============================================================================== $0e _TGUSEMD 画面の使用状態の設定 引数 d1.b グラフィック/テキスト画面の指定 d1.b = 0 グラフィック画面($c00000~$dfffff) 1 テキスト画面 ($e40000~$e7ffff) d2.b 画面の使用状態 d2.b = 0 未使用 1 システムで使用中(ソフトキーボード/電卓) 2 アプリケーションで使用中(RAMDISK等) 3 破壊 -1 現在の使用状態を調べる. 返値 変更前の使用状態(-1 なら画面の指定が異常) グラフィック/テキスト画面の使用状態を設定する. テキストの使用状態を 2 にすると、ソフトキーボード/電卓が消去され、以後 マウスカーソル/ソフトキーボード/電卓が新たに表示出来なくなる. ============================================================================== $0f _DEFCHR 外字定義 引数 d1.hw パターンの大きさ d1.hw = 8 8x16,16x16ドット 12 12x24,24x24〃 d1.w 漢字コード(Shift-JIS/JIS) a1.l パターンアドレス 返値 d0.l = 0 正常終了 -1 エラー(指定の漢字コードは外字ではない) 外字を設定する. 指定できる漢字コードは、全角 $eb9f~$ebfc(JIS:$7621~$767e) 及び $ec40~$ec7e($7721~777e)、半角 $f400~$f5ff. CONDRV.SYS 及び HIOCS.X 常駐時には、d1.l = 0 でカーソルの形状を設定し、 d1.l = -1 で元に戻す. また、d1.l = $ffff で CONDRV.SYS の バックスクロールウィンドウ内のカーソル形状を設定する. ============================================================================== $10 _CRTMOD CRT モード設定 引数 d1.w CRT モード 実画面 表示画面 色数 枚数 kHz d1.w = 0 1024 512 x 512 16 1 31 1 〃 〃 〃 〃 15 2 〃 256 x 256 〃 〃 31 3 〃 〃 〃 〃 15 4 512 512 x 512 16 4 31 5 〃 〃 〃 〃 15 6 〃 256 x 256 〃 〃 31 7 〃 〃 〃 〃 15 8 〃 512 x 512 256 2 31 9 〃 〃 〃 〃 15 10 〃 256 x 256 〃 〃 31 11 〃 〃 〃 〃 15 12 〃 512 x 512 65536 1 31 13 〃 〃 〃 〃 15 14 〃 256 x 256 〃 〃 31 15 〃 〃 〃 〃 15 16 1024 768 x 512 16 1 31 17 〃 1024 x 424 〃 〃 24 18 〃 1024 x 848 〃 〃 24 19 〃 640 x 480 〃 〃 24 20 〃 768 x 512 256 2 31 21 〃 1024 x 848 〃 〃 24 22 〃 1024 x 424 〃 〃 24 23 〃 640 x 480 〃 〃 24 24 〃 768 x 512 65536 1 31 25 〃 1024 x 848 〃 〃 24 26 〃 1024 x 424 〃 〃 24 27 〃 640 x 480 〃 〃 24 +$100 モードの切り換えのみ行なう -1 現在のモードを調べる 返値 d1.w = -1 の時、現在のモード(0~19) CRT モードを設定する. テキスト画面のプレーン 0/1 をクリアして表示モード に、グラフィック画面とスプライト画面はクリアせずに無表示モードにする. テキストパレットは初期化される. d1.w = 19 の 640 x 480 のモードは ROM IOCS version 1.2 以上で使用可能. d1.w = 20~27 は表示画面サイズより小さい実画面のグラフィックを表示する モードで、ROM IOCS version 1.3 だけで使用可能(ハードウェア的には全機種 とも実現可能). ============================================================================== $11 _CONTRAST コントラスト設定 引数 d1.b コントラスト d1.b = 0~15 コントラストを設定する -1 コントラストを調べる -2 システム設定値に戻す 返値 変更前のコントラスト コントラストを設定する. ============================================================================== $12 _HSVTORGB HSV→RGB 変換 引数 d1.l HSV データ %iiif_ffff_000s_ssss_000v_vvvv bit 23~21 色相 %000 赤 ~黄色 %001 黄色 ~緑 %010 緑 ~シアン %011 シアン ~青 %100 青 ~マゼンダ %101 マゼンダ~赤 %110 禁止 %111 〃 bit 20~16 色相(色合) bit 12~ 8 彩度(0:白 $1f:原色) bit 4~ 0 明度(0:黒 $1f:原色) 返値 RGB データ(輝度ビットは常に 0) %gggg_grrr_rrbb_bbb0 bit 15~11 緑成分 bit 10~ 6 赤〃 bit 5~ 1 青〃 ただし、色相が異常な場合は -1 が返る. HSV 方式による色データを RGB 方式に変換する. HSV 方式は、色相/彩度/明度による色の指定方法. ============================================================================== $13 _TPALET テキストパレット設定 引数 d1.b パレットコード(0~15) d1.b = 0 テキストカラー 0 1 〃 1 2 〃 2 3 〃 3 4~7 ソフトキーボード/電卓 0 8~15 〃 1 d2.l カラーコード d2.l = 0~$ffff カラーコードを設定 -1 カラーコードを調べる -2 システム設定値に戻す 返値 ステータス(d2.l = -1 の時はカラーコード) d0.l = 0 正常終了 -1 カラーコードが異常 テキストパレットにカラーコードを設定する. パレットに 4~7,8~15 を指定 した時は、それらの全てに同じカラーコードが設定される. ============================================================================== $14 _TPALET2 テキストパレット独立設定 引数 d1.b パレットコード(0~15) d2.l カラーコード d2.l = 0~$ffff カラーコードを設定 -1 カラーコードを調べる 返値 ステータス(d2.l = -1 の時はカラーコード) d0.l = 0 正常終了 -1 カラーコードが異常 テキストパレットにカラーコードを設定する. IOCS TPALET($13) とは違い、パレットごとに独立して設定出来る. ============================================================================== $15 _TCOLOR テキストプレーン指定 引数 d1.b アクセスプレーンの指定 d1.b = %???1 プレーン 0 %??10 〃 1 %?100 〃 2 %1000 〃 3 %0000 〃 0 返値 d1.w は破壊される. IOCS TEXTGET($1a),TEXTPUT($1b),CLIPPUT($1c) でアクセスされるテキスト プレーンを設定する. 使用後はプレーン 0 を設定しなければならないが、0 以外のままの場合、その他の IOCS コールの動作は保証されない. ============================================================================== $16 _FNTADR フォントアドレスの収得 引数 d1.w 漢字コード(Shift-JIS/JIS) d2.b パターンの大きさ d2.b = 6 6x12,12x12ドット 8 8x16,16x16〃 12 12x24,24x24〃 返値 d0.l パターンアドレス d1.hw パターンの X 方向のドット数 d1.w パターンの X 方向のバイト数-1 d2.w 〃 Y 〃 ドット数-1 指定の文字フォントのアドレスを調べる. 得られたアドレスはスーパーバイザ領域の可能性がある. それぞれの文字は文字コードの順に連続的に配置されているとは限らない. 外字、12ドット文字はいつまでもパターンデータが残っているとは限らない. この IOCS コールはシステムで使用するので、一般のアプリケーションからは 使用しないこと. なお、ROM IOCS version 1.3 及び HIOCS.X では d2.b = 0 の場合 8 が指定 されたものと扱うが、それ以外だと動作が違うので注意すること. ============================================================================== $17 _VRAMGET テキスト VRAM のバイト単位読み込み 引数 d1.w バッファの X 方向のバイト数-1 d2.w 〃 Y 〃 ドット数-1 d3.l (VRAM の X 方向-バッファの X 方向)のバイト数 a1.l バッファのアドレス a2.l VRAM 〃 返値 d0/d1/d2/a1/a2 は内容が保証されない. VRAM からバッファにバイト単位で読み込む. VRAM にテキスト画面を指定する場合は、VRAM の X 方向のバイト数は 128 バ イトとなる. ============================================================================== $18 _VRAMPUT テキスト VRAM のバイト単位書き込み 引数 d1.w バッファの X 方向のバイト数-1 d2.w 〃 Y 〃 ドット数-1 d3.l (VRAM の X 方向-バッファの X 方向)のバイト数 a1.l バッファのアドレス a2.l VRAM 〃 返値 d0/d1/d2/a1/a2 は内容が保証されない. バッファから VRAM にバイト単位で書き込む. VRAM にテキスト画面を指定する場合は、VRAM の X 方向のバイト数は 128 バ イトとなる. ============================================================================== $19 _FNTGET フォント読み込み 引数 d1.hw パターンの大きさ d1.hw = 6 6x12,12x12ドット 0,8 8x16,16x16〃 12 12x24,24x24〃 d1.w 漢字コード(Shift-JIS/JIS) a1.l データバッファのアドレス(4+フォントサイズ分のバイト数が必要) (0,a1) パターンの X 方向のドット数 (2,a1) Y 〃 (4,a1) (パターンデータ) 返値 パターンの存在するアドレス(転送元) 指定の文字フォントを読み込む. ============================================================================== $1a _TEXTGET テキスト VRAM のドット単位読み込み 引数 d1.w X 座標 d2.w Y 座標 a1.l データバッファのアドレス (0,a1) パターンの X 方向のドット数 (2,a1) Y 〃 (4,a1) (パターンデータ) テキスト VRAM からドット単位で読み込む. ============================================================================== $1b _TEXTPUT テキスト VRAM のドット単位書き込み 引数 d1.w X 座標 d2.w Y 座標 a1.l データバッファのアドレス (0,a1) パターンの X 方向のドット数 (2,a1) Y 〃 (4,a1) パターンデータ テキスト VRAM へドット単位で書き込む. ============================================================================== $1c _CLIPPUT テキスト VRAM のドット単位書き込み(クリッピング処理あり) 引数 d1.w X 座標 d2.w Y 座標 a1.l データバッファのアドレス (0,a1) パターンの X 方向のドット数 (2,a1) Y 〃 (4,a1) パターンデータ a2.l クリッピング座標バッファのアドレス (0,a2) 左端 X 座標 (2,a2) 上端 Y 〃 (4,a2) 右端 X 〃 (6,a2) 下端 Y 〃 クリッピング処理をしながら、テキスト VRAM へドット単位で書き込む. ============================================================================== $1d _SCROLL 表示座標の設定 引数 d1.w 動作の指定 d1.w = 0 グラフィックページ 0 の設定 1 〃 1 〃 2 〃 2 〃 3 〃 3 〃 4 〃 0 の表示座標の収得のみ 5 〃 1 〃 6 〃 2 〃 7 〃 3 〃 8 テキストの設定 9 〃表示座標の収得のみ d2.w X 座標(設定時) d3.w Y 〃 返値 変更前の表示座標 d0.hw X 座標 d0.lw Y 〃 グラフィック及びテキストの表示座標を設定する. テキスト画面の X 座標を、表示画面が実画面からはみ出る位置に設定すると 表示が乱れる. 通常、変更前の表示座標はハードウェアの仕様により常に 0 が返る. ============================================================================== $1e _B_CURON カーソル一時停止解除 カーソルの表示の一時停止を解除する. ============================================================================== $1f _B_CUROFF カーソル一時停止 カーソルの表示を一時停止する. ============================================================================== $20 _B_PUTC 文字表示 引数 d1.w 文字コード 返値 表示後のカーソル位置 d0.hw 桁位置 d0.w 行〃 文字を表示する. 漢字を表示する場合、第 1/第 2 バイトを 2 回に分けてもかまわない. 画面の右端で半角 1 文字しか表示出来ない時に全角文字を表示しようとした 場合、半角スペースを表示して改行してから全角文字を表示する. ============================================================================== $21 _B_PRINT 文字列表示 引数 a1.l 文字列のアドレス 返値 d0.l 表示後のカーソル位置 d0.hw 桁位置 d0.w 行〃 a1.l 文字列終端の 0 のアドレス 文字列を表示する. ============================================================================== $22 _B_COLOR 表示色設定 引数 d1.w 表示属性 d1.w = 0 テキストパレット 0 (通常黒) 1 〃 1 (〃 水色) 2 〃 2 (〃 黄色) 3 〃 3 (〃 白) + 4 強調 + 8 逆転 +12 逆転強調 -1 属性を調べる 返値 d0.b 変更前の表示属性(負数なら表示属性の指定が異常) IOCS B_PUTC($20),B_PRINT($21) で表示する文字の属性を設定する. ============================================================================== $23 _B_LOCATE カーソル移動 引数 d1.w 桁位置(ただし、d1.w = -1 の時カーソル位置の収得のみ) d2.w 行〃 返値 移動前のカーソル位置(-1 ならカーソル位置の指定が異常) d0.hw 桁位置 d0.w 行〃 カーソルを指定位置に移動する. ROM IOCS version 1.3 では、座標収得時のみ d1.l に d0.l と同じ値が返る. ============================================================================== $24 _B_DOWN_S カーソルを 1 行下に移動 返値 常に 0 カーソルを 1 行下に移動する. カーソルが最下行にある場合はスクロールアップする. ============================================================================== $25 _B_UP_S カーソルを 1 行下に移動 返値 常に 0 カーソルを 1 行上に移動する. カーソルが先頭行にある場合はスクロールダウンする. ============================================================================== $26 _B_UP カーソルを指定行数だけ上に移動 引数 d1.b 移動行数(0 の時は 1 と見なします) 返値 常に 0 カーソルを指定行上に移動する. 指定行数だけ移動出来ない場合は移動しない. ROM IOCS version 1.3 では、移動した場合に 0、移動しなかった場合には -1 を返す. ============================================================================== $27 _B_DOWN カーソルを指定行数だけ下に移動 引数 d1.b 移動行数(0 の時は 1 と見なします) 返値 常に 0 カーソルを指定行下に移動する. 指定行数だけ移動出来ない場合は最下行まで移動する. ============================================================================== $28 _B_RIGHT カーソルを指定桁数だけ右に移動 引数 d1.b 移動桁数(0 の時は 1 と見なします) 返値 常に 0 カーソルを指定桁右に移動する. 指定桁数だけ移動出来ない場合は右端まで移動する. ============================================================================== $29 _B_LEFT カーソルを指定桁数だけ左に移動 引数 d1.b 移動桁数(0 の時は 1 と見なします) 返値 常に 0 カーソルを指定桁左に移動する. 指定桁数だけ移動出来ない場合は左端まで移動する. ============================================================================== $2a _B_CLR_ST 画面の複数行消去 引数 d1.b 消去範囲の指定 d1.b = 0 カーソル位置から最終行右端まで 1 先頭行左端からカーソル位置まで 2 画面全体(消去後カーソルは先頭行左端に移動します) 範囲を指定して画面の複数行を消去する. ============================================================================== $2b _B_ERA_ST 現在行の複数桁消去 引数 d1.b 消去範囲の指定 d1.b = 0 カーソル位置から右端まで 1 左端からカーソル位置まで 2 カーソル行全体 返値 d0.l = 0 正常終了 その他 異常終了(範囲指定若しくはカーソル位置が異常) 範囲を指定してカーソル行の複数桁を消去する. 異常終了した時の返値は通常 -1 だが、ROM IOCS version 1.3 未満でかつカ ーソル位置が原因の場合は不定である. ============================================================================== $2c _B_INS 複数行挿入 引数 d1.b 挿入行数(0 の時は 1 と見なします) 返値 常に 0 カーソル位置に複数行挿入する. カーソル行以下の行はスクロールする. カーソルは左端に移動する. ROM IOCS version 1.3 未満では引数の d1.w の上位バイトを 0 にしておかな いと正常に動作しないので注意すること. ============================================================================== $2d _B_DEL 複数行削除 引数 d1.b 削除行数(0 の時は 1 と見なします) 返値 常に 0 カーソル位置から複数行削除する. カーソル行以下の行はスクロールする. ROM IOCS version 1.3 未満では引数の d1.w の上位バイトを 0 にしておかな いと正常に動作しないので注意すること. ============================================================================== $2e _B_CONSOL 表示範囲設定 引数 d1.l 表示開始位置(d1.l = -1 の時変更しません) d1.hw X 方向の表示開始ドット位置(16の倍数で1008以下) d1.w Y 〃 ( 4 〃 1020 〃 ) d2.l 表示範囲(d2.l = -1 の時変更しません) d2.hw X 方向の表示桁数-1(0~127) d2.w Y 〃 行数-1(0~ 63) 返値 d0.l 常に 0 d1.l 変更前の表示開始オフセット(X/8+Y*128) d2.l 〃 表示範囲 テキスト画面の表示範囲を設定する. カーソルは先頭行左端に移動する. IOCS $20~$2d で扱う座標は設定した表示範囲の左上が(0,0)となり、表示 範囲内に影響する. ただし、スクロール/画面クリアは表示範囲外の桁に 影響が出る. 表示範囲だけスクロールさせるには IOCS B_CONMOD($ad) の モード 18:ソストコピースクロールを指定する. IOCS.X 組み込み時は引数の d1.hw に 8 の倍数を指定出来るが、ROM IOCS version 1.3 未満で 8 の倍数を指定するとアドレスエラーが発生する. ============================================================================== $2f _B_PUTMES 座標指定文字列表示 引数 d1.b 表示属性 d1.b = 0 テキストパレット 0 (通常黒) 1 〃 1 (〃 水色) 2 〃 2 (〃 黄色) 3 〃 3 (〃 白) + 4 強調 + 8 逆転 +12 逆転強調 d2.w 表示桁位置(絶対座標:0~127) d3.w 表示行位置(絶対座標:0~ 63) d4.w 表示桁数-1 a1.l 表示文字列のアドレス 返値 d0.l 不定(内容は保証されない) d2.w 表示後の桁位置 d4.w 不定(内容は保証されない) a1.l 文字列の終端のアドレス(指定した文字列が表示桁数より長ければ、 最後に表示した文字の次のアドレス) 指定した絶対座標から文字列を直接表示する. ファンクションキー行表示用で、 IOCS B_CONSOL($2e) の影響を受けない. 桁数以上は表示しない(全角文字が表示出来ない場合は半角スペースが表示 される). 文字列が指定の桁数未満の長さの場合、残りは半角スペースを表示 する. 文字コード $fe は空白が表示される. テキスト画面の右端まで行ったらそれ以上表示せず、スクロールもしない. ============================================================================== $30 _SET232C RS-232C パラメータ設定 引数 d1.w RS-232C 設定値(d1.w = -1 の時 現在の設定を調べます) bit 15~14 ストップビット(1:1bit 2:1.5bit 0,3:2bit) bit 13~12 パリティ(1:奇数 3:偶数 0,2:なし) bit 11~10 ビット長(0:5bit以下 1:6bit 2:7bit 3:8bit) bit 9 XON/XOFF処理(0:OFF 1:ON) bit 8 SI/SO 処理( 〃 ) bit 7~ 0 BPS(0: 75 1: 150 2: 300 3: 600 4:1200 5:2400 6:4800 7:9600 8:17361) 返値 変更前の設定 RS-232C のモードを設定する. BPS に範囲外の値を指定した場合、1200BPS として初期化する. ROM IOCS では、SI/SO処理が正常に動作しないので使用しないこと. BPS の 8 番は ROM IOCS version 1.3 だけで使用可能. ============================================================================== $31 _LOF232C RS-232C 受信バッファのデータ数を求める 返値 d0.w RS-232C 受信データ数 RS-232C の受信バッファ内のデータ数を調べる. ============================================================================== $32 _INP232C RS-232C 受信データを得る 返値 d0.w RS-232C 受信データ(下位 8 ビット) RS-232C からデータを受信する. データを受信していなければ受信するまで待つ. ============================================================================== $33 _ISNS232C RS-232C 受信データの検査 返値 d0.l = 0 受信データなし $100?? 〃 あり($?? は受信データ) RS-232C からデータを受信しているか調べる. 受信データバッファの内容は変化ない. ============================================================================== $34 _OSNS232C RS-232C データが送信可能か検査する 返値 d0.l = 0 送信不可能 4 〃 可能(バッファが空で、XON でもない) RS-232C にデータが送信可能か調べる. ============================================================================== $35 _OUT232C RS-232C データ送信 引数 d1.b 送信データ RS-232C にデータを送信する. データが送信不可能であれば送信可能になるまで待つ. ============================================================================== $36 (未公開) マウスデータ受信時の処理アドレス設定 引数 d1.l 処理アドレス(0 の時取り消し) d2.w カウンタ初期値 マウスからデータを受信した時に呼び出されるサブルーチンのアドレスを設定 する. 通常はマウス処理 IOCS で使用するデータの書き換えを行うアドレスが 設定されている. 設定したアドレスが呼び出される時は、a1.l が示すアドレスからの 3 バイト にマウスからの受信データがセットされている. カウンタの値を大きくすると呼び出される間隔が長くなる(1 の時最短). 処理アドレスに 0 を指定すると、標準アドレスが設定される. ============================================================================== $37 (未公開) ESC[>系エスケープシーケンスの拡張処理アドレス設定 引数 d1.l 処理アドレス(0 の時取り消し) 返値 変更前のアドレス(ROM IOCS version 1.3 のみ) エスケープシーケンスのうち、ESC[> 系の拡張処理を行うサブルーチンのアド レスを設定する. 処理アドレスに 0 を指定すると、標準アドレスが設定される. 設定したアドレスが呼び出される時は、d0.w に ESC[> の次の 2 バイトデータ、 a0.l に ESC[> のアドレスがセットされている. ROM IOCS version 1.3のみ、変更前のアドレスを返す. ============================================================================== $38 _SETFNTADR 外字フォントアドレス設定 引数 d1.l フォントアドレス(負数でアドレス収得のみ) d2.l 外字グループ番号 d2.l = 0 16x16ドット JIS:$2c21~$2d7e 1 16x16 〃 :$7621~$777e 2 8x16 〃 :$f400~$f5ff 3 24x24 〃 :$2c21~$2d7e 4 24x24 〃 :$7621~$777e 5 12x24 〃 :$f400~$f5ff 6 6x12 〃(半角) 7 8x 8 〃(1/4角) 8 8x16 〃(半角) 9 16x16 〃(全角) 10 12x12 〃(1/4角) 11 12x24 〃(半角) 12 24x24 〃(全角) 13 16x16 〃(全角非漢字) 14 16x16 〃(第1水準文字) 15 16x16 〃(第2水準文字) 0x80 拡張外字処理アドレスを得る 返値 変更前のアドレス アドレス設定時に -1 が返った時はエラー(奇数アドレスを指定した場合等). 外字フォントデータのアドレスを設定する. HIOCS.X 組み込み時には d2.l が 6 以上で普通の文字のフォントも設定可能. ROM IOCS では奇数アドレスを設定してもエラーにならないので注意すること. ============================================================================== $39 (未公開) BEEP音用PCMのデータ設定 引数 d1.l PCM データアドレス d2.w 〃 サイズ 返値 d0.l 常に 0 d1.l 変更前の PCM データアドレス d2.w 〃 サイズ BEEP 音用の PCM データのアドレスと長さを設定する. ============================================================================== $3a (未公開) プリンタパラメータ設定 引数 a1.l パラメータアドレス(0 で ROM) プリンタ処理 IOCS で使用するパラメータを設定する. パラメータアドレスに 0 を指定すると ROM 内の初期値を設定する. パラメータの内容は以下の通り. offset size $00 1.l T-VRAM プレーン 0 アドレス($e00000) $04 1.w Y 方向ドット数÷12-1(41) $06 1.l 拡大ビットイメージ出力時の Y 方向余りラインパターン $0a 1.w Y 方向ドット数÷24-1(21) $0c 1.l 縮小ビットイメージ出力時の Y 方向余りラインパターン $10 1.w X 方向ドット数÷ 8-1(96) $12 8.b 漢字モード指定コード $1a 8.b 〃 解除 〃 $22 4.b LF のコード $26 6.b 改行幅 16/120インチのコード $2c 6.b 改行幅を電源投入時の状態に戻すコード $32 6.b 改行幅 10/120インチのコード $38 6.b 〃 5/150 〃 $3e 8.b ビットイメージ出力コード(1536×24ドット出力) $46 8.b 〃 ( 768×24 〃 ) $4e 8.b 〃 ( 18×24 〃 ) $56 8.b 〃 ( 36×24 〃 ) $5e 1.b 0:MSB~LSB 1:LSB~MSB の順で出力 $5f 1.b 半角ビットイメージ出力時の左右の空白ドット数 $60 1.b 全角〃 $61 1.b モード(bitの値が1ならビットイメージで出力する) bit 4:半角文字 bit 3:第一水準漢字及び全角非漢字 bit 2:第二水準漢字 bit 1:第一外字 bit 0:第二外字 $06,$0c は下位 3 バイトのみ有効で、左端から 512/($04,$0a の値)の余り のドット数だけビットを 1 にする. $12~$56 のコードは、先頭 1 バイトでコードのバイト数を指定し、残りで コードを指定する. なお、$22 からの LF コード指定バッファは PRNDRVn.SYS を組み込むとサイ ズが 2 バイトに縮まり、$24 から CR のコードを指定するようになっている. ============================================================================== $3b _JOYGET ジョイスティック入力 引数 d1.w ジョイスティック番号(0/1) 返値 ジョイスティックデータ(0 の時押されていて、1 の時離されています.) bit 7 常に 1 bit 6 ボタン 1 bit 5 〃 2 bit 4 常に 1 bit 3 レバー 右 bit 2 〃 左 bit 1 〃 下 bit 0 〃 上 ジョイスティックのデータを読む. 無効なジョイスティック番号を指定した場合は、常に 0 が返ります. ============================================================================== $3c _INIT_PRN プリンタ初期化 引数 d1.hb 1 ページの行数-1(-1で指定なし) d1.b 1 行の桁数-1 ( 〃 ) 返値 d0.l = 0 出力不可能 $20 出力可能 プリンタポートを初期化し、同時にプリンタに出力可能か調べる. 引数の d1.w は IOCS _OUTPRN($3f) 用のプリントフォーマット. ============================================================================== $3d _SNSPRN プリンタに出力可能か検査する 返値 d0.l = 0 出力不可能 $20 出力可能 プリンタに出力可能か調べる. ============================================================================== $3e _OUTLPT プリンタ直接出力 引数 d1.b 出力データ プリンタに直接データを出力する. 漢字処理はせず、また自動改行/改頁しない. 通常はプリンタに出力が完了するまで処理が戻らない. ROM IOCS version 1.3 未満では、アクセラレータ等で高速動作中に使用する とウェイト不足で正常動作しない場合がある. ============================================================================== $3f _OUTPRN プリンタ出力 引数 d1.b 出力データ 返値 d1.b は破壊される. プリンタに文字を出力する. 漢字処理は S-JIS で行い、2 バイト文字の場合は 1 バイトずつ 2 回に分けて出力すること. 通常はプリンタに出力が完了するまで処理が戻らない. ============================================================================== $40 _B_SEEK ディスクのシーク 引数 d1.hb PDA d1.hb = $10~$13 2DD/8 0~ 3 $30~$33 2DD/9 〃 $70~$73 2HQ 〃 $80~$8f SASI-HD 0~15 $90~$93 2HD 0~ 3 d1.b モード(SASI-HD の時は意味がありません) bit 6 MFM/MFM モード切り換え 0:FM 1:MFM(通常は 1) bit 5 リトライ 0:リトライしない 1:する bit 4 シーク 0:シークしない 1:する リトライする場合、5 回シークせずにリトライし、その後 5 回 リキャリブレート/シークをしてからリトライします. d2.l 目的シーク位置(SASI-HD の時は 256 バイト単位のレコード番号) bit 31~24 セクタ長 0:128 1:256 2:512 3:1024(バイト) bit 23~16 トラック(0~76) bit 15~ 8 サイド(0/1) bit 7~ 0 セクタ(1~8) 返値 SASI-HD : ステータス d0.l = 正数 正常終了 -1 規定時間内に応答がなかった -3 エラー その他 異常終了(最下位バイトがエラーコード) 2HD-FD : FDC ステータス bit 31~24 リザルトステータス 0(ST0) bit 23~16 コマンド終了時のシリンダ番号(PCN) ディスクの指定位置までシークする. SASI-HD のシークで返値が $ffffff?? の場合、$?? はセンスバイトの先頭バ イトを示す. PDA の $10~13,$30~$33,$70~$73 は ROM IOCS version 1.3 若しくは FDDEVICE.X 常駐時のみ使用可能. また、ROM IOCS version 1.3 の場合、 SASI-HD は SCSI に接続されているのものが対象となる. ============================================================================== $41 _B_VERIFY ディスクのベリファイ 引数 d1.hb PDA d1.b モード(SASI-HD の時は意味がありません) d2.l 目的検査位置 d3.l 検査するバイト数 a1.l 検査するデータのアドレス 返値 d2/d3/a1 は内容が保証されない. SASI-HD : ステータス(負数で異常終了) d0.l = 正数 正常終了 -1 規定時間内に応答がなかった -2 データが不一致 -3 エラー その他 異常終了(最下位バイトがエラーコード) 2HD-FD : FDC ステータス(-1 でパラメータが異常) bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) データの比較検査を行なう. 2HD-FD との比較の場合、FDC の SCAN EQUAL 命令を使用してデータの比較を 行うので、データが $ff である時はそのバイトの比較は行われずに等しいも のとして扱われる. ============================================================================== $42 _B_READDI ディスクの診断の為の読み出し 引数 d1.hb PDA(SASI-HD:$80~$8f は指定出来ません) d1.b モード d2.l 目的読み込み位置 d3.l 読み込むバイト数 a1.l 読み込むバッファのアドレス 返値 d2/d3/a1 は内容が保証されない. FDC ステータス(-1 でパラメータが異常) bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) 2HD の診断の為のディスク読み出しをする. 通常の読み込みでは使わない. ============================================================================== $43 _B_DSKINI ドライブの初期化 引数 d1.hb PDA d2.l モーターオフまでの時間(SASI-HD の時は意味がありません) a1.l SASI-HD : アサインドライブパラメータのデータアドレス 2HD-FD : SPECIFY コマンドのデータアドレス 返値 SASI-HD : ステータス(負数で異常終了) 2HD-FD : FDC ステータス bit 31~24 リザルトステータス 3(ST3) bit 23~ 0 不定 ドライブを初期化する. モーターオフまでの時間は 1/100 秒単位で、0 を指定すると標準値( 2 秒)になる. a1.l に 0 を指定すると、標準の設定が使用される. ============================================================================== $44 _B_DRVSNS ドライブの状態検査 引数 d1.hb PDA 返値 SASI-HD : ステータス(負数で異常終了) 2HD-FD : FDC ステータス bit 31~24 リザルトステータス 3(ST3) bit 23~ 0 不定 ディスクの状態を調べる. ============================================================================== $45 _B_WRITE ディスクへの書き込み 引数 d1.hb PDA d1.b モード(SASI-HD の時は意味がありません) d2.l 目的書き込み位置 d3.l 書き込むバイト数 a1.l 書き込むデータのアドレス 返値 d2/d3/a1 は内容が保証されない. SASI-HD : ステータス(負数で異常終了) 2HD-FD : FDC ステータス(-1 でパラメータが異常) bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) ディスクにデータを書き込む. 注意:OS が行っているバッファリング処理とは無関係に動作するので、OS が バッファ中にデータを保持している場合、ディスク上のデータは内容が保証さ れない場合がある. ============================================================================== $46 _B_READ ディスクからの読み込み 引数 d1.hb PDA d1.b モード(SASI-HD の時は意味がありません) d2.l 目的読み込み位置 d3.l 読み込むバイト数 a1.l 読み込むバッファのアドレス 返値 d2/d3/a1 は内容が保証されない. SASI-HD : ステータス(負数で異常終了) 2HD-FD : FDC ステータス(-1 でパラメータが異常) bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) ディスクからデータを読み込む. 注意:OS が行っているバッファリング処理とは無関係に動作するので、OS が バッファ中にデータを保持している場合、ディスク上のデータは内容が保証さ れない場合がある. ============================================================================== $47 _B_RECALI ディスクのリキャリブレイト 引数 d1.hb PDA d1.b モード(SASI-HD の時は 0 にします) d1.b = 0 トラック 0 へのシーク -1 強制レディ状態での検査 返値 SASI-HD : ステータス(負数で異常終了) 2HD-FD : FDC ステータス bit 31~24 リザルトステータス 0(ST0) bit 23~16 シリンダ番号(C) トラック 0 へのシーク若しくは強制レディ状態での検査を行なう. 後者を実行後、ST0 の bit 4(EQUIPMENT CHECK) が 1 になっていた場合は 指定のドライブは存在しない. 2HD-FD の ドライブの有無はこの IOCS コールでしか検査出来ない. ============================================================================== $48 _B_ASSIGN ハードディスクの代替トラック設定 引数 d1.hb PDA(2HD-FD:$90~$93 は指定できません) d2.l レコード番号 d3.l インタリーブコード a1.l 代替トラック指定データのアドレス (0,a1) 代替トラック番号上位バイト (1,a1) 〃 中位〃 (2,a1) 〃 下位〃 (3,a1) 常に 0 返値 ステータス(負数で異常終了) ハードディスクの代替トラックを設定する. ============================================================================== $49 _B_WRITED 2HD への破損データ書き込み 引数 d1.hb PDA(SASI-HD:$80~$8f は指定出来ません) d1.b モード d2.l 目的書き込み位置 d3.l 書き込むバイト数 a1.l 書き込むデータのアドレス 返値 d2/d3/a1 は内容が保証されない. FDC ステータス(-1 でパラメータが異常) bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) ディスクに破損データを書き込む. 通常の書き込みでは使わない. ============================================================================== $4a _B_READID 2HD の ID 情報の読み出し 引数 d1.hb PDA(SASI-HD:$80~$8f は指定出来ません) d1.b モード d2.l 目的読み出し位置(トラックとサーフェスの指定のみ) bit 31 を 1 にすると検出IDを収得する. 返値 d0.l FDC ステータス bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) d2.l 読み出したID(d2.l の bit 31=1 の時のみ) 2HD-FD の ID 情報を読み出す. ============================================================================== $4b _B_BADFMT ハードディスクの破損トラックを使用不能にする 引数 d1.hb PDA(2HD-FD:$90~$93 は指定できません) d2.l レコード番号 d3.b インタリーブコード(1 または 6) 返値 ステータス(負数で異常終了) ハードディスクの破壊トラックを使用不能にする. ============================================================================== $4c _B_READDL 2HD からの破損データ読み込み 引数 d1.hb PDA(SASI-HD:$80~$8f は指定出来ません) d1.b モード d2.l 目的読み込み位置 d3.l 読み込むバイト数 a1.l 読み込むバッファのアドレス 返値 d2/d3/a1 は内容が保証されない. FDC ステータス(-1 でパラメータが異常) bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) ディスクから破損データを読み込む. 通常の読み込みでは使わない. ============================================================================== $4d _B_FORMAT ディスクのフォーマット 引数 d1.hb PDA d1.b モード(SASI-HD の時は意味がありません) d2.l 目的フォーマット位置(SASI-HD の時はレコード番号) bit 31~24 セクタ長 0:128 1:256 2:512 3:1024(バイト) bit 23~16 トラック(0~76) bit 15~ 8 サイド(0/1) bit 7~ 0 各セクタのデータ部に書き込む値 d3.l SASI-HD : インタリーブコード(1 または 6) 2HD-FD : ID データのバイト数 a1.l ID データのアドレス(SASI-HD の時は意味がありません) 返値 SASI-HD : ステータス(負数で異常終了) 2HD-FD : FDC ステータス(-1 でパラメータが異常) bit 31~24 リザルトステータス 0(ST0) bit 23~16 〃 1(ST1) bit 15~ 8 〃 2(ST2) bit 7~ 0 シリンダ番号(C) ディスクの物理フォーマットを行なう. 2HD-FD のフォーマット時に使用する ID データの内容は、以下のテーブルを セクタ数だけ繰り返したもの. offset size 0 1.b トラック番号 1 1.b サイド(0/1) 2 1.b セクタ番号 3 1.b セクタ長(128x2バイト) 通常トラック番号は 0~76、セクタ番号は 1~8、セクタ長は 0~3 になる. ============================================================================== $4e _B_DRVCHK 2HD ドライブの状態設定 引数 d1.hb PDA(SASI-HD:$80~$8f は指定出来ません) d2.w 機能番号 d2.w = 0 状態検査 1 排出(排出禁止状態では排出不可) 2 排出禁止 1 3 〃 許可 1 4 ディスクがセットされていない時 LED 点滅 5 〃 消灯 6 排出禁止 2(OS 用なのでユーザーは使用禁止) 7 〃 許可 2(〃) 8 排出検査 (〃) 9 状態検査 2 返値 d2.w = 0~7,9 の時、ディスクの状態 bit 7 LED 点滅 bit 6 排出禁止 bit 5 排出禁止 2(OS バッファ有り) bit 4 〃 1(ユーザー指定) bit 3 書き込み禁止 bit 2 ノットレディ bit 1 メディア挿入 bit 0 メディア誤挿入 ノットレディとライトプロテクトは d2.w = 0 の場合のみ有効. また、この時メディア未挿入なら両方のビットが 1 になる. d2.w = 8 の時、前回の検査後に排出したか(1:していない -1:した) 2HD-FD の状態を参照/設定する. ============================================================================== $4f _B_EJECT ディスクのイジェクト/シッピング 引数 d1.hb PDA 返値 終了コード(負数なら異常終了) 2HD-FD の時は意味がありません 2HD-FD を排出若しくは SASI-HD をシッピングする. 排出禁止状態でも排出できるが、OS のバッファリング処理とは無関係に動作 するので、OS がバッファ中にデータを保持している場合排出を行うとディス クの内容が保証されなくなるため、排出してはいけない. ============================================================================== $50 _DATEBCD 日付データのバイナリ→BCD 変換 引数 d1.l 日付データ(バイナリ) $0y_yy_mm_dd bit 27~16 年バイナリ(1980~2079) bit 15~ 8 月〃 (1~12) bit 7~ 0 日〃 (1~31) 返値 変換後の日付データ(BCD) $uw_yy_mm_dd bit 31~28 閏年カウンタ(0:今年が閏年 1:3年後 2:2年後 3:1年後) bit 27~24 曜日カウンタ(0:日曜日 1:月曜日 … 6:土曜日) bit 23~16 年 BCD 2 桁($00~$99) bit 15~ 8 月 〃 ($01~$12) bit 7~ 0 日 〃 ($01~$31) ただし、日付が異常な場合は -1 が返る. 日付をバイナリから BCD に変換する. 閏年カウンタは、年カウンタとともに加算される. ============================================================================== $51 _DATESET 日付の設定 引数 日付データ(BCD) 返値 常に 0 時計に日付を設定する. ただし、正しい日付の指定であるかは検査されない. X680x0 のクロック IC(RTC) は BCD 形式のデータを設定しなければならない ので、IOCS DATEBCD($50) でバイナリの日付を BCD に変換した後にこのコー ルで設定する. ============================================================================== $52 _TIMEBCD 時刻データのバイナリ→BCD 変換 引数 d1.l 時刻データ(バイナリ) $00_hh_mm_ss bit 23~16 時バイナリ(0~23) bit 15~ 8 分〃 (0~59) bit 7~ 0 秒〃 (0~59) 返値 時刻データ(BCD) $0t_hh_mm_ss bit 27~24 1(システム規定:24時間計であることを表す) bit 23~16 時 BCD 2 桁(0~23) bit 15~ 8 分 〃 (0~59) bit 7~ 0 秒 〃 (0~59) ただし、時刻が異常な場合は -1 が返る. 時刻をバイナリから BCD に変換する. ============================================================================== $53 _TIMESET 時刻の設定 引数 時刻データ(BCD) 返値 常に 0 時計に時刻を設定する. ただし、正しい時刻の指定であるかは検査されない. ============================================================================== $54 _DATEGET 日付の読み込み 返値 日付データ(BCD) $0w_yy_mm_dd bit 27~24 曜日カウンタ bit 23~16 年 BCD 2 桁($00~$99) bit 15~ 8 月 〃 ($01~$12) bit 7~ 0 日 〃 ($01~$31) 時計から日付を読み込む. ============================================================================== $55 _DATEBIN 日付データの BCD→バイナリ変換 引数 日付データ(BCD) $0w_yy_mm_dd bit 27~24 曜日カウンタ bit 23~16 年 BCD 2 桁($00~$99) bit 15~ 8 月 〃 ($01~$12) bit 7~ 0 日 〃 ($01~$31) 返値 変換後の日付データ(バイナリ) $wy_yy_mm_dd bit 31~28 曜日カウンタ bit 27~16 年バイナリ(1980~2079) bit 15~ 8 月〃 (1~12) bit 7~ 0 日〃 (1~31) 日付データを BCD からバイナリに変換する. ============================================================================== $56 _TIMEGET 時刻の読み込み 返値 時刻データ(BCD) 時計から時刻を読み込む. ============================================================================== $57 _TIMEBIN 時刻データの BCD→バイナリ変換 引数 時刻データ(BCD) 返値 変換後の時刻データ(バイナリ) 時刻データを BCD からバイナリに変換する. ============================================================================== $58 _DATECNV 日付データの文字列→バイナリ変換 引数 a1.l 日付を表す文字列のアドレス(区切りは '/' と '-' のどちらでもよい) 形式は 'yyyy/mm/dd',0 または 'yy-mm-dd',0 返値 d0.l 変換後の日付データ(バイナリ) ただし、日付を表す文字列が異常な場合は d0.l = -1 が返る. a1.l 文字列末尾(変換に失敗した場合、内容は保証されない) 日付データを文字列からバイナリに変換する. ただし、正しい日付の指定であ るかは検査されない. 年が 80~99、0~79 である時は下二桁の指定と見なし てそれぞれ 1900、2000 を足した値を返す. 数値の先頭にある空白と '0' は読み飛ばされる. 区切りは実際にはどの記号 を使用しても正常に動作する. ============================================================================== $59 _TIMECNV 時刻データの文字列→バイナリ変換 引数 a1.l 時刻を表す文字列のアドレス(区切りは ':' のみ) 形式は 'hh:mm:ss',0 返値 d0.l 変換後のデータ(バイナリ) ただし、時刻を表す文字列が異常な場合は d0.l = -1 が返る. a1.l 文字列末尾(変換に失敗した場合、内容は保証されない) 時刻データを文字列からバイナリに変換する. 数値の先頭にある空白と '0' は読み飛ばされる. 区切りは実際にはどの記号 を使用しても正常に動作する. ============================================================================== $5a _DATEASC 日付データのバイナリ→文字列変換 引数 d1.l 日付データ(バイナリ) $fy_yy_mm_dd bit 31~28 文字列形式 0 'yyyy/mm/dd',0 1 'yyyy-mm-dd',0 2 'yy/mm/dd',0 3 'yy-mm-dd',0 bit 27~16 年バイナリ(1980~2079) bit 15~ 8 月〃 (1~12) bit 7~ 0 日〃 (1~31) a1.l 文字列バッファのアドレス 返値 d0.l = 0 正常終了 -1 エラー a1.l 文字列終端の 0 のアドレス 日付データをバイナリから文字列に変換する. 文字列バッファは 9 または 11 バイト以上必要. ============================================================================== $5b _TIMEASC 時刻データのバイナリ→文字列変換 引数 d1.l 時刻データ(バイナリ) $00_hh_mm_ss bit 23~16 時バイナリ(0~23) bit 15~ 8 分〃 (0~59) bit 7~ 0 秒〃 (0~59) a1.l 文字列バッファのアドレス(形式は 'hh:mm:ss',0) 返値 d0.l = 0 正常終了 -1 エラー a1.l 文字列終端の 0 のアドレス 時刻データをバイナリから文字列に変換する. 文字列バッファは 9 バイト以上必要. ============================================================================== $5c _DAYASC 曜日データのバイナリ→文字列変換 引数 d1.l 曜日データ(0:日曜日 1:月曜日 … 6:土曜日) a1.l 文字列バッファのアドレス(形式は '?',0) 返値 d0.l 常に 0 a1.l 文字列終端の 0 のアドレス 曜日データをバイナリから文字列に変換する. 文字列バッファは 3 バイト以上必要. ============================================================================== $5d _ALARMMOD アラーム許可/禁止 引数 d1.l アラームの設定 d1.l = 0 禁止 1 許可 2 現在の状態を調べる 返値 現在の状態(0/1) アラームの禁止/許可を設定する. 設定は SRAM に記録される. ============================================================================== $5e _ALARMSET アラーム設定 引数 d1.l アラーム時間 $0wddhhmm bit 27~24 曜日(0:日曜日 1:月曜日 … 6:土曜日 $f:無指定) bit 23~16 日 BCD 2 桁($01~$31,$ff:無指定) bit 15~ 8 時 〃 ($00~$23, 〃 ) bit 7~ 0 分 〃 ($00~$59, 〃 ) d2.l 電源オフまでの時間(分) a1.l テレビコントロールコード若しくは処理アドレス a1.l = -1 ディスプレイ制御しない 0 ディスプレイ電源オン/コンピュータモード 1~$3f 指定の数値でテレビコントロール その他 処理アドレス(偶数アドレスかつ先頭が $60:bra であること) 返値 常に 0 アラーム時間と処理内容を設定し、アラームを許可する. 設定は SRAM に記録 される. 曜日を $f、日/時/分を $ff にすると、それぞれが無指定になる. ただし、全 てを無指定にしないこと. 電源オフまでの時間に 0 を指定すると、電源オフしない. ============================================================================== $5f _ALARMGET アラームの設定状態を収得 返値 d0.l 処理アドレス d1.l アラーム時間 d2.l 電源オフまでの時間(分) アラーム時間と処理内容を調べる. ============================================================================== $60 _ADPCMOUT ADPCM 出力 引数 d1.w ウェイトモード/周波数/出力モード bit 15 ウェイトモード(0:通常 1:ノーウェイト) bit 10~ 8 サンプリング周波数 (0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz) bit 1~ 0 出力モード(0:なし 1:左 2:右 3:左右) d2.l 再生データのバイト数 a1.l 〃 アドレス 返値 d0/d2/a1 は内容が保証されない. ADPCM を再生する. データが $ff00 バイト以下の場合はすぐに戻る. DMA が使用不可能であれば、使用可能になるまで待つ. ============================================================================== $61 _ADPCMINP ADPCM 入力 引数 d1.w ウェイトモード/周波数/出力モード bit 15 ウェイトモード(0:通常 1:ノーウェイト) bit 10~ 8 サンプリング周波数 (0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz) bit 1~ 0 出力モード(0:なし 1:左 2:右 3:左右) d2.l 録音バッファのバイト数 a1.l 〃 アドレス 返値 d0/d2/a1 は内容が保証されない. ADPCM を録音する. データが $ff00 バイト以下の場合はすぐに戻る. DMA が使用不可能であれば、使用可能になるまで待つ. データ自体はモノラルで入力するが、モニタ出力を出力モードで指定出来る. ============================================================================== $62 _ADPCMAOT ADPCM 出力(アレイチェーン) 引数 d1.w ウェイトモード/周波数/出力モード bit 15 ウェイトモード(0:通常 1:ノーウェイト) bit 10~ 8 サンプリング周波数 (0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz) bit 1~ 0 出力モード(0:なし 1:左 2:右 3:左右) d2.l チェーンテーブルの個数 a1.l 〃 アドレス アレイチェーンによって ADPCM を再生する. DMA が使用不可能であれば、使用可能になるまで待つ. アレイチェーンテーブルの内容は、以下のチェーンテーブルを繰り返したもの. offset size 0 1.l 再生データのアドレス 4 1.w 〃 バイト数(1~$ffff) ============================================================================== $63 _ADPCMAIN ADPCM 入力(アレイチェーン) 引数 d1.w ウェイトモード/周波数/出力モード bit 15 ウェイトモード(0:通常 1:ノーウェイト) bit 10~ 8 サンプリング周波数 (0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz) bit 1~ 0 出力モード(0:なし 1:左 2:右 3:左右) d2.l チェーンテーブルの個数 a1.l 〃 アドレス アレイチェーンによって ADPCM を録音する. DMA が使用不可能であれば、使用可能になるまで待つ. アレイチェーンテーブルの内容は、以下のチェーンテーブルを繰り返したもの. offset size 0 1.l 録音バッファのアドレス 4 1.w 〃 バイト数(1~$ffff) ============================================================================== $64 _ADPCMLOT ADPCM 出力(リンクアレイチェーン) 引数 d1.w ウェイトモード/周波数/出力モード bit 15 ウェイトモード(0:通常 1:ノーウェイト) bit 10~ 8 サンプリング周波数 (0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz) bit 1~ 0 出力モード(0:なし 1:左 2:右 3:左右) a1.l チェーンテーブルのアドレス リンクアレイチェーンによって ADPCM を再生する. DMA が使用不可能であれば、使用可能になるまで待つ. リンクアレイチェーンテーブルの内容は、以下のチェーンテーブルを連結したもの. offset size 0 1.l 再生データのアドレス 4 1.w 〃 バイト数(1~$ffff) 6 1.l 次のテーブルのアドレス(0 でテーブルの終わり) ============================================================================== $65 _ADPCMLIN ADPCM 入力(リンクアレイチェーン) 引数 d1.w ウェイトモード/周波数/出力モード bit 15 ウェイトモード(0:通常 1:ノーウェイト) bit 10~ 8 サンプリング周波数 (0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz) bit 1~ 0 出力モード(0:なし 1:左 2:右 3:左右) a1.l チェーンテーブルのアドレス リンクアレイチェーンによって ADPCM を録音する. DMA が使用不可能であれば、使用可能になるまで待つ. リンクアレイチェーンテーブルの内容は、以下のチェーンテーブルを連結したもの. offset size 0 1.l 録音バッファのアドレス 4 1.w 〃 バイト数(1~$ffff) 6 1.l 次のテーブルのアドレス(0 でテーブルの終わり) ============================================================================== $66 _ADPCMSNS ADPCM 状態検査 返値 実行状態 d0.l = $00 何も実行していない $02 IOCS ADPCMOUT($60) を実行中 $04 IOCS ADPCMINP($61) 〃 $12 IOCS ADPCMAOT($62) 〃 $14 IOCS ADPCMAIN($63) 〃 $22 IOCS ADPCMLOT($64) 〃 $24 IOCS ADPCMLIN($65) 〃 ADPCM の実行状態を調べる. ============================================================================== $67 _ADPCMMOD ADPCM 実行制御 引数 d1.l 制御内容(0:終了 1:中断 2:再開) 返値 d0.l = 0 正常終了 -1 制御モードが不正 ADPCM の実行を制御する. ROM IOCS では、ショートカットで呼び出すと割り込み禁止状態になったまま で帰るので注意すること. ============================================================================== $68 _OPMSET OPM レジスタ設定 引数 d1.b レジスタ番号 d2.b データ 返値 d2.b は破壊される. OPM に書き込める状態になるまで待ってから、レジスタにデータを書き込む. レジスタ $1b に書き込む場合、汎用出力のモードは変更できない. ============================================================================== $69 _OPMSNS OPM 状態検査 返値 d0.b ステータス bit 7 Busy フラグ(0 で書き込み可能) bit 1 タイマ A オーバーフロー(1 の時オーバーフローが発生) bit 0 〃 B 〃 OPM のステータスを読み込む. ============================================================================== $6a _OPMINTST OPM 割り込み設定 引数 a1.l 処理アドレス(0 で割り込み禁止) 返値 d0.l = 0 割り込みを設定/禁止した その他 すでに使用中 OPM による割り込みを設定する. MFP のみ制御するので、OPM に対しても設定 する必要がある. ROM IOCS version 1.3 では、ショートカットで呼び出すと割り込みが全て禁 止された状態で帰るので注意すること. 割り込みの処理アドレスが $01000000 以上(最上位バイトが 0 以外)で割り込 みが未使用と見なされるが、ROM IOCS version 1.3 で vbr が有効になってい る場合は処理アドレスが $00ff0770 の時のみ未使用と見なされる. ============================================================================== $6b _TIMERDST Timer-D 割り込み設定 引数 d1.hb 単位時間(1:1.0 2:2.5 3:4.0 4:12.5 5:16.0 6:25.0 7:50.0 μ秒単位) d1.b カウンタ(0 の時は 256 として扱う) a1.l 処理アドレス(0 で割り込み禁止) 返値 d0.l = 0 割り込みを設定/禁止した その他 すでに使用中 Timer-D による割り込みを設定する. 割り込み周期は単位時間×カウンタ. CONFIG.SYS で PROCESS を設定している場合は、割り込みを変更出来ない. ROM IOCS version 1.3 では、ショートカットで呼び出すと割り込みが全て禁 止された状態で帰るので注意すること. 割り込みを未使用と見なす条件は _OPMINTST と同じ. ============================================================================== $6c _VDISPST 垂直同期割り込み設定 引数 d1.hb 割り込み期間(0:垂直帰線期間 1:垂直表示期間) d1.b カウンタ(0 の時は 256 として扱う) a1.l 処理アドレス(0 で割り込み禁止) 返値 d0.l = 0 割り込みを設定/禁止した その他 すでに使用中 垂直同期による割り込みを設定する. ROM IOCS version 1.3 では、ショートカットで呼び出すと割り込みが全て禁 止された状態で帰るので注意すること. 割り込みを未使用と見なす条件は _OPMINTST と同じ. 実際には Timer-A に割り込みを設定している. 垂直表示回数は 31kHz で秒間 約 55.4 回、24kHz で約 53.0 回、15kHz で約 61.3 回(実測値). 電源投入後か以前に大きいカウンタ値で設定していた時は、最初の割り込みが 発生するタイミングが遅くなる. ============================================================================== $6d _CRTCRAS ラスター割り込み設定 引数 d1.w ラスタ番号 a1.l 処理アドレス(0 で割り込み禁止) 返値 d0.l = 0 割り込みを設定した その他 すでに使用中 ラスタ走査による割り込みを設定する. CRTC が指定のラスタを走査開始すると割り込みが発生する. ROM IOCS version 1.3 では、ショートカットで呼び出すと割り込みが全て禁 止された状態で帰るので注意すること. 割り込みを未使用と見なす条件は _OPMINTST と同じ. ============================================================================== $6e _HSYNCST 水平同期割り込み設定 引数 a1.l 処理アドレス(0 で割り込み禁止) 返値 d0.l = 0 割り込みを設定した その他 すでに使用中 水平同期による割り込みを設定する. 水平同期信号の立ち下がり時に割り込みが発生する. ROM IOCS version 1.3 では、ショートカットで呼び出すと割り込みが全て禁 止された状態で帰るので注意すること. 割り込みを未使用と見なす条件は _OPMINTST と同じ. ============================================================================== $6f _PRNINTST プリンタ割り込み設定 引数 a1.l 処理アドレス(0 で割り込み禁止) 返値 d0.l = 0 割り込みを設定した その他 すでに使用中 プリンタによる割り込みを設定する. プリンタがデータを受け取ることが可能になった時に割り込みが発生する. ROM IOCS version 1.3 では、ショートカットで呼び出すと割り込みが全て禁 止された状態で帰るので注意すること. 割り込みを未使用と見なす条件は _OPMINTST と同じ. ============================================================================== $70 _MS_INIT マウス初期化 マウスを初期化する. ============================================================================== $71 _MS_CURON マウスカーソル表示 マウスカーソルを表示する. ============================================================================== $72 _MS_CUROF マウスカーソル消去 マウスカーソルを消去する. ============================================================================== $73 _MS_STAT マウスカーソルの表示状態を調べる 返値 d0.w = 0 マウスカーソルは表示されていない -1 〃 表示されている マウスカーソルの表示状態を調べる. ============================================================================== $74 _MS_GETDT マウス移動量/ボタン状態を調べる 返値 マウスの移動量及びボタンの状態 bit 31~24 X 方向移動量 bit 23~16 Y 〃 bit 15~ 8 左ボタン(0:OFF -1:ON) bit 7~ 0 右〃 (〃 ) マウスの移動量及びボタンの状態を調べる. ============================================================================== $75 _MS_CURGT マウスカーソルの座標収得 返値 マウスカーソルの座標 d0.hw X 座標 d0.w Y 〃 マウスカーソルの座標を調べる. ============================================================================== $76 _MS_CURST マウスカーソルの座標設定 引数 マウスカーソルの座標 d1.hw X 座標 d1.w Y 〃 返値 d0.l = 0 座標が指定出来た -1 座標が異常 マウスカーソルの座標を設定する. ============================================================================== $77 _MS_LIMIT マウスカーソルの移動範囲設定 引数 マウスカーソルの座標 d1.hw 左端 X 座標 d1.w 上端 Y 〃 d2.hw 右端 X 座標 d2.w 下端 Y 〃 返値 d0.l = 0 座標が指定出来た -1 座標が異常 マウスカーソルの移動範囲を設定する. ============================================================================== $78 _MS_OFFTM マウスのボタンを離すまでの時間を調べる 引数 d1.w ボタンの指定(0:左ボタン -1:右ボタン) d2.w 待ち時間(0 の時は離すまで待つ) 返値 d0.w = 0 ドラッグ -1 待ち時間の最大値を超えた その他 待ち時間 マウスのボタンを離すまでの時間を調べる. ============================================================================== $79 _MS_ONTM マウスのボタンを押すまでの時間を調べる 引数 d1.w ボタンの指定(0:左ボタン -1:右ボタン) d2.w 待ち時間(0 の時は押すまで待つ) 返値 d0.w = 0 ドラッグ -1 待ち時間の最大値を超えた その他 待ち時間 マウスのボタンを押すまでの時間を調べる. ============================================================================== $7a _MS_PATST マウスカーソルのパターン定義 引数 d1.w カーソル番号(0~15) a1.l パターンデータのアドレス マウスカーソルのパターンを定義する. ROM IOCS version 1.1 では正常に動作しないので注意すること. マウスカーソルの大きさは 16 x 16 ドットで、1 ドットが 1 ビットに対応する. パターンデータの内容は以下の通り(カラーコード 8~15 は 4~7 より優先される). offset size 0 1.w パターンの左端 X 座標からマウス X 座標までの距離 2 1.w 〃 上端 Y 〃 Y 〃 4 16.w マスクパターン(陰にするデータ) 36 16.w マウスパターン(表示するデータ) パターンの左端/上端からマウス座標までの距離は、0(パターンの左隅/上隅を マウス座標にする)~15(パターンの右隅/下隅をマウス座標にする)で指定する. マスクパターンが 0 のドットはカラーコード 4~7 で表示され、1 のドット は無視される. マウスパターンが 1 のドットはカラーコード 8~15 で表示され、0 のドット は無視される. ただし、マスクパターンが 0 でマウスパターンが 1 の場合は カラーコード 8~15 が優先して表示される. ============================================================================== $7b _MS_SEL マウスカーソルのパターン選択 引数 d1.w カーソル番号(0~15) マウスカーソルのパターンを選択する. ============================================================================== $7c _MS_SEL2 マウスカーソルのアニメーション 引数 a1.l カーソル番号テーブルのアドレス マウスパターンを複数個用いて、アニメーションで表示する. カーソル番号テーブルはカーソル番号をワードサイズで 6 個以下並べ、最後は -1 にする. ============================================================================== $7d _SKEY_MOD ソフトキーボード制御 引数 d1.l 制御コード d1.l = 0 ソフトキーボード消去 1 〃 表示 2 〃 表示状態の検査 -1 〃 自動制御 d2.l 表示座標(d1.l = 1 の時) d2.hw X 座標 d2.w Y 〃 返値 表示状態(0:消去 1:表示) ソフトキーボードを制御する. 自動制御を指定すると、マウスの右ボタンを押すことにより状態が 非表示→マウス表示→キーボード/マウス表示→マウス表示→非表示 と変化する. ============================================================================== $7e _DENSNS 電卓制御 電卓による入力を調べる. 結果はキー入力として返る. ============================================================================== $7f _ONTIME 起動後の経過時間を調べる 返値 d0.l 経過時間の時分秒(0~23:59:59"99=8639999,1/100秒単位) d1.l 〃 日数 (0~65535) ROM が起動してからの時間を調べる. ROM IOCS では、ショートカットで呼び出すと割り込み禁止状態になったまま で帰るので注意すること. ============================================================================== $80 _B_INTVCS ベクタ設定 引数 d1.w ベクタ番号($0000~$00ff:割り込み $0100~$01ff:IOCS コール) a1.l 処理アドレス 返値 変更前の処理アドレス ベクタの処理アドレスを設定する. 設定したアドレスはスーパーバイザモードで呼び出される. 割り込みからは rte で、IOCS コールは rts で戻る. ROM IOCS version 1.3 のみ、ベクタ番号が異常な場合に -1 を返す. ============================================================================== $81 _B_SUPER スーパーバイザ/ユーザモードの切り換え 引数 a1.l ssp(0 の時ユーザモードからスーパーバイザモードに切り換え) 返値 d0.l ユーザモードに切り換えた場合は常に 0 を返す. スーパバイザモードに切り換えた場合は、切り換え前の ssp の値を 返す. ただし、既にスーパバイザモードになっていたら -1 を返す. a1.l 不定 スーパーバイザ/ユーザモードを切り換える. スーパバイザモードに切り換えた場合、usp が ssp に設定される. ユーザモードに切り換えた場合、ssp は指定したアドレスになり、usp は以前 のアドレスに戻る. ============================================================================== $82 _B_BPEEK 指定アドレスから 1 バイト読み込み 引数 a1.l 読み込みアドレス 返値 d0.b データ a1.l 次のアドレス 指定アドレスから 1 バイトデータを読み込む. ============================================================================== $83 _B_WPEEK 指定アドレスから 1 ワード読み込み 引数 a1.l 読み込みアドレス 返値 d0.w データ a1.l 次のアドレス 指定アドレスから 1 ワードデータを読み込む. ============================================================================== $84 _B_LPEEK 指定アドレスから 1 ロングワード読み込み 引数 a1.l 読み込みアドレス 返値 d0.l データ a1.l 次のアドレス 指定アドレスから 1 ロングワードデータを読み込む. ============================================================================== $85 _B_MEMSTR 指定アドレスから複数バイト読み込み 引数 d1.l 転送バイト数-1 a1.l 転送元アドレス a2.l 転送先アドレス 返値 a1.l 次のアドレス a2.l 〃 d1.l は破壊される. 指定アドレスから複数バイトデータを転送する. IOCS _B_MEMSET とは転送の方向が違う(*a2++ = *a1++). ============================================================================== $86 _B_BPOKE 指定アドレスヘ 1 バイト書き込み 引数 d1.b データ a1.l 書き込みアドレス 返値 a1.l 次のアドレス 指定アドレスに 1 バイトデータを書き込む. ============================================================================== $87 _B_WPOKE 指定アドレスヘ 1 ワード書き込み 引数 d1.w データ a1.l 書き込みアドレス 返値 a1.l 次のアドレス 指定アドレスに 1 ワードデータを書き込む. ============================================================================== $88 _B_LPOKE 指定アドレスヘ 1 ロングワード書き込み 引数 d1.l データ a1.l 書き込みアドレス 返値 a1.l 次のアドレス 指定アドレスに 1 ロングワードデータを書き込む. ============================================================================== $89 _B_MEMSET 指定アドレスヘ複数バイト書き込み 引数 d1.l 転送バイト数-1 a1.l 転送先アドレス a2.l 転送元アドレス 返値 a1.l 次のアドレス a2.l 〃 d1.l は破壊される. 指定アドレスに複数バイトデータを転送する. IOCS _B_MEMSTR とは転送の方向が違う(*a1++ = *a2++). ============================================================================== $8a _DMAMOVE DMA 転送 引数 d1.b モード bit 7 方向(0:a1からa2 1:a2からa1) bit 3~2 MAC(0:a1固定 1:a1++ 2:a1-- 3:指定禁止) bit 1~0 DAC(0:a2固定 1:a2++ 2:a2-- 3:指定禁止) d2.l 転送バイト数 a1.l 転送元アドレス a2.l 転送先〃 返値 d0/d2/a1/a2 は内容が保証されない. バイト単位で DMA 転送を行なう. $ff00 バイト以上転送する場合はすぐに戻ってこない. DMA が使用不可能であれば、使用可能になるまで待つ. ============================================================================== $8b _DMAMOV_A DMA 転送(アレイチェーン) 引数 d1.b モード d2.l チェーンテーブルの個数 a1.l 〃 アドレス a2.l 転送先アドレス アレイチェーンによってバイト単位で DMA 転送を行なう. DMA が使用不可能であれば、使用可能になるまで待つ. アレイチェーンテーブルの内容は、以下のチェーンテーブルを繰り返したもの. offset size 0 1.l 転送元データのアドレス 4 1.w 転送バイト数(1~$ffff) ============================================================================== $8c _DMAMOV_L DMA 転送(リンクアレイチェーン) 引数 d1.b モード a1.l チェーンテーブルのアドレス a2.l 転送先アドレス リンクアレイチェーンによってバイト単位で DMA 転送を行なう. DMA が使用不可能であれば、使用可能になるまで待つ. リンクアレイチェーンテーブルの内容は、以下のチェーンテーブルを連結したもの. offset size 0 1.l 転送元データのアドレス 4 1.w 転送バイト数(1~$ffff) 6 1.l 次のテーブルのアドレス(0 でテーブルの終わり) ============================================================================== $8d _DMAMODE DMA 状態検査 返値 実行状態 d0.l = $00 何も実行していない $8a IOCS DMAMOVE ($8a) を実行中 $8b IOCS DMAMOV_A($8b) 〃 $8c IOCS DMAMOV_L($8c) 〃 DMA の実行状態を調べる. ============================================================================== $8e _BOOTINF 起動情報を得る 返値 起動状態 bit 31~24 起動方法(0:パワースイッチ 1:外部スイッチ 2:タイマ) bit 23~ 0 ブート情報($80~$8f:SASI-HD 0~15 $90~$93:2HD-FD 0~3) ($ed0000~$ed3ffe:SRAM その他:ROM ) 起動情報を調べる. ROM から起動した場合は起動アドレス(1.l)へのポインタ を返すが、SRAM から起動した場合は起動したアドレスそのものを返す. なお、SRAM/ROM から起動後、SRAM に設定されている起動アドレスを変更する と正しいアドレスを返さない. ============================================================================== $8f _ROMVER ROM バージョンを得る 返値 バージョン/作成日(BCD) bit 31~24 バージョン bit 23~16 年 bit 15~ 8 月 bit 7~ 0 日 ROM のバージョンと作成年月日を調べる. ============================================================================== $90 _G_CLR_ON グラフィック画面の初期化及び表示モードの設定 グラフィック画面をクリアして表示する. パレットは標準に戻り、アクセスペ ージは 0 に設定される. ============================================================================== $91 (未公開) グラフィック画面モードの設定 引数 d1.b グラフィック画面モード d1.b = 0 16 色 4 画面(実画面 512) 1 256 〃 2 〃 ( 〃 512) 3 65536 〃 1 〃 ( 〃 512) 4 16 〃 1 〃 ( 〃 1024) -1 現在のモードを調べる 返値 変更前のグラフィック画面モード グラフィック画面モードを直接設定する. 設定データは VC R0($e82400) の設定と同じ. ============================================================================== $92 (未公開) プライオリティ設定 引数 d1.w プライオリティ設定(ただし d1.w = -1 の時は現在の設定を調べます) 返値 変更前の設定 プライオリティを直接設定する. 設定データは VC R1($e82500) の設定と同じ. ============================================================================== $93 (未公開) 画面表示及び特殊モードの設定 引数 d1.w 画面表示及び特殊モード設定(ただし d1.w = -1 の時は現在の設定を調べます) 返値 変更前の設定 画面表示及び特殊モードを直接設定する. 設定データは VC R2($e82600) の設定と同じ. ============================================================================== $94 GPALET グラフィックパレット設定 引数 d1.w パレットコード d2.l カラーコード(d2.l = -1 の時カラーコードを調べます) 返値 d0.l = 0 正常終了 -1 グラフィック画面が初期化されていないか、パレットコードが異常 d2.l = -1 の時はカラーコードを返す(-1 ならエラー) グラフィックパレットを設定/収得する. ROM IOCS では65536色モードで正常に動作しないので注意すること. ============================================================================== $95 (未公開) カラーコード設定 引数 d1.w パレットコード IOCS $9a,$9b,$9c で書き込まれるパレットコードを設定する. ============================================================================== $96 (未公開) アクセスページ設定 引数 d1.w アクセスページ(0~3) グラフィック IOCS で操作されるページを直接設定する. IOCS APAGE($b1) とほぼ同じであるが、存在しないページを指定してもエラー にならないので注意すること. ============================================================================== $97 (未公開) グラフィック VRAM のドット単位読み込み 引数 d1.w X 座標 d2.w Y 〃 a1.l バッファのアドレス (0,a1) X 方向のドット数 (2,a1) Y 〃 (4,a1) (色数 $000f:16色 $00ff:256色 $ffff:65536色) (6,a1) (パターンデータ) グラフィック画面からバッファにドット単位で読み込む. ============================================================================== $98 (未公開) グラフィック VRAM のドット単位書き込み(色マスクあり) 引数 d1.w X 座標 d2.w Y 〃 d3.w マスクするカラーコード a1.l バッファのアドレス (0,a1) X 方向のドット数 (2,a1) Y 〃 (4,a1) 色数($000f:16色 $00ff:256色 $ffff:65536色) (6,a1) パターンデータ 返値 d0.l = 0 正常終了 -1 エラー(指定された色数と実際の設定が異なる) バッファからグラフィック画面にドット単位で書き込む. マスクするカラーコードに指定した色のドットは書き込まれない. ============================================================================== $99 (未公開) グラフィック VRAM のドット単位書き込み 引数 d1.w X 座標 d2.w Y 〃 a1.l バッファのアドレス (0,a1) X 方向のドット数 (2,a1) Y 〃 (4,a1) 色数($000f:16色 $00ff:256色 $ffff:65536色) (6,a1) パターンデータ 返値 d0.l = 0 正常終了 -1 エラー(指定された色数と実際の設定が異なる) バッファからグラフィック画面にドット単位で書き込む. ============================================================================== $9a (未公開) グラフィック VRAM のビットパターン書き込み 引数 d1.w X 座標 d2.w Y 〃 a1.l バッファのアドレス (0,a1) X 方向のドット数 (2,a1) Y 〃 (4,a1) ビットパターン グラフィック画面にビットパターンを書き込む. ビットが 1 のドットは IOCS $95 で設定したカラーコードが書き込まれ、 0 のドットは何も書き込まれない. ============================================================================== $9b (未公開) グラフィック VRAM のビットパターン書き込み(バックカラーあり) 引数 d1.w X 座標 d2.w Y 〃 d3.w バックカラーコード a1.l バッファのアドレス (0,a1) X 方向のドット数 (2,a1) Y 〃 (4,a1) ビットパターン グラフィック画面にビットパターンを書き込む. ビットが 1 のドットは IOCS $95 で設定したカラーコードが書き込まれ、 0 のドットはバックカラーコードが書き込まれる. ============================================================================== $9c (未公開) グラフィック VRAM のビットパターン拡大書き込み 引数 d1.w X 座標 d2.w Y 〃 d3.w X 方向の拡大率 d4.w Y 〃 a1.l バッファのアドレス (0,a1) X 方向のドット数 (2,a1) Y 〃 (4,a1) ビットパターン グラフィック画面にビットパターンを拡大して書き込む. ビットが 1 のドットは IOCS $95 で設定したカラーコードが書き込まれ、 0 のドットは何も書き込まれない. ============================================================================== $a0 _SFTJIS S-JIS→JIS コード変換 引数 d1.w S-JIS 漢字コード 返値 d0.hw = 0 変換成功 -1 エラー d0.w JIS 漢字コード(エラーの場合通常 $2228:※) d1.l 〃 S-JIS 漢字コードを JIS 漢字コードに変換する. ============================================================================== $a1 _JISSFT JIS→S-JIS コード変換 引数 d1.w JIS 漢字コード 返値 d0.hw = 0 変換成功 -1 エラー d0.w S-JIS 漢字コード(エラーの場合通常 $81a6:※) d1.l 〃 JIS 漢字コードを S-JIS 漢字コードに変換する. ============================================================================== $a2 _AKCONV ANK→S-JIS コード変換 引数 d1.hw 平仮名/片仮名の指定(0:平仮名に変換 1:片仮名に変換) d1.w ANK コード($20~7e,$a1~df) 返値 d0.hw = 0 変換成功 -1 エラー d0.w S-JIS 漢字コード(エラーの場合通常 $81a6:※) ANK コードを 全角 S-JIS コードに変換する. ============================================================================== $a3 _RMACNV ローマ字→ANK カナ変換 引数 d1.b アルファベット a1.l 作業領域のアドレス a2.l 変換結果を入れるバッファのアドレス 返値 ステータス d0.l = 0 変換途中で返せる仮名文字がない (作業領域に変換途中の文字が残っているので、それを破棄 してはいけない) -1 変換不可能な文字が指定された (作業領域の先頭バイトは 0 になる) その他 変換文字数(作業領域に変換途中の文字が残っている可能性 があるので、それを破棄してはいけない) ローマ字を仮名に変換する. ローマ字は通常大文字を使用し、促音や拗音など 小さい仮名はローマ字の母音にアルファベットの小文字を用いる. 最初の変換の前に、作業領域の先頭のバイトを 0 にしておく. ============================================================================== $a4 _DAKJOB 濁点処理 引数 a1.l 全角文字列の終端(0)のアドレス 返値 d0.l 文字列の増加したバイト数 d0.l = 0 最後の全角文字に濁点を付けた場合 2 文字列の最後に濁点を加えた場合 a1.l 処理後の全角文字列の終端のアドレス 全角文字列の濁点処理を行なう. ============================================================================== $a5 _HANJOB 半濁点処理 引数 a1.l 全角文字列の終端(0)のアドレス 返値 d0.l 文字列の増加したバイト数 d0.l = 0 最後の全角文字に半濁点を付けた場合 2 文字列の最後に半濁点を加えた場合 a1.l 処理後の全角文字列の終端のアドレス 全角文字列の半濁点処理を行なう. ============================================================================== $ac _SYS_STAT システム状態の設定 引数 d1.l モード d1.l = 0 MPU 状態の収得 1 キャッシュ状態の収得 2 キャッシュを SRAM の設定値に設定 3 キャッシュの消去 4 キャッシュの設定 d2.l キャッシュ有効/無効フラグ(d1.l = 4 の時のみ) bit 1 データキャッシュ(0:無効 1:有効) bit 0 命令 〃 ( 〃 ) 返値 d1.l = 0 の時、MPU ステータス bit 31~16 クロックスピード(0.1MHz単位) bit 15 浮動小数点演算コプロセッサ(0:なし 1:あり) bit 14 MMU(0:なし 1:あり) bit 7~ 0 MPU タイプ(0:68000 1:68010 2:68020 3:68030) d1.l = 1,2,4 の時、変更前のキャッシュ有効/無効フラグ システム状態の設定を行なう. この IOCS コールは ROM IOCS version 1.3 だけで使用可能. ============================================================================== $ad _B_CONMOD カーソルおよびスクロールの設定 引数 d1.l モード d1.w = 0 カーソル点滅許可 1 カーソル点滅禁止 2 カーソルパターン指定 3 カーソルパターン定義 16 スムーススクロールの指定 17 ラスタコピースクロールの指定 18 ソフト〃 d2.l d1.w = 2 の時、カーソルパターン d2.w = 0 内部バッファに定義されたパターンで描画する. その他 d2.hw をスタートラインと見なして、d2.b/d2.hb をプレーン 0/1 と排他論理和をとる. d1.w = 3 の時、パターンアドレス d1.w = 16 の時、スクロールの指定 d2.l = 0 ジャンプスクロール 1 4 ドットスクロール 2 8 〃 3 16 〃 カーソルおよびスクロールを設定する. カーソルの点滅を禁止した場合、カーソルが表示されたままになる. 許可状態 ならば一定時間ごとに反転する. カーソルパターンの指定は、d2.b でプレーン 0 の反転パターン、d2.hb でプ レーン 1 の反転パターンを設定し、d2.hw で指定したライン位置から一番下 のラインまで排他的論理和がとられる. $0000_ffffで従来のパターンと同じに なる. d2.w が 0 の場合は d1.w = 3 で設定したパターンが使用される. カーソルパターンの定義は、d2.l をカーソルのパターンアドレスと見なして 内部バッファにコピーする. パターンはプレーン 0/1 の順に 16 バイトずつ 並べる. スムーススクロールを使用する場合は、文字を連続的に出力しなければスクロ ール時に画面が乱れる. 垂直同期(16ms)の間に 1 ライン出力を終了すること. また、広範囲でのソフトコピースクロールは、表示速度が遅くなる. この IOCS コールは ROM IOCS version 1.3 若しくは IOCS.X 常駐時のみ使用 可能. ただし、前者の場合は d1.w = 2 のカーソルパターン指定で d2.l = 0 の場合は標準のカーソルが表示される. また d2.w = 3 のカーソルパターン定 義は使用できないので注意すること. ============================================================================== $ae _OS_CURON カーソル表示 カーソル表示をする. コンソールに対して ESC[>5l を出力した時に使用される. IOCS $20~$2f に対して有効. ============================================================================== $af _OS_CUROF カーソル消去 カーソル表示しない. コンソールに対して ESC[>5h を出力した時に使用される. IOCS $20~$2f に対して有効. ============================================================================== $b0 _DRAWMODE グラフィック描画モードの設定 引数 d1.w 描画モード(0:通常 1:反転 -1:現在のモードを調べる) 返値 変更前のモード グラフィック描画の際の描画モードを設定する. 反転モードで描画した場合、書き込まれるドットの色の NOT 値で描画する. このモードで 2 回描画すると、画面が元に戻る. 使用後は通常の描画モード に戻すこと. 反転モードが有効な IOCS コールは _LINE、_BOX、_FILL、_SYMBOL だけで、 他のコールは常に通常のモードで描画される. この IOCS コールは ROM IOCS version 1.3 若しくは IOCS.X、HIOCS.X 常駐 時のみ使用可能だが、前の二つでは正常に動作しない. ============================================================================== $b1 _APAGE グラフィック描画ページの設定 引数 d1.b 書き込みページ(0~3,-1 の時は現在の設定を調べます) 返値 d1.b = -1 の時、現在の書き込みページ それ以外の時、ステータス d0.l = 0 正常終了 -1 グラフィック使用不可 -2 ページが指定外(4 以上) -3 指定ページは現在のモードでは使用不可 グラフィック画面の書き込みページを設定する. ============================================================================== $b2 _VPAGE グラフィック画面表示ページの設定 引数 d1.b 表示ページ(bit 0~3 がページ 0~3 に対応) 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 ページが指定外 -3 指定ページは現在のモードでは使用不可 グラフィック画面の表示ページを設定する. ============================================================================== $b3 _HOME グラフィック画面の表示位置設定 引数 d1.b 表示位置を設定するページ(bit 0~3 がページ 0~3 に対応,0 で全てのページ) d2.w X 座標 d3.w Y 〃 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 ページ若しくは座標が指定外 -3 指定ページ若しくは座標は現在のモードでは使用不可 グラフィック画面の表示位置を設定する. d1.b = 0 の時、有効なページが全て変更される. ============================================================================== $b4 _WINDOW グラフィック描画ウィンドウの設定 引数 d1.w 左端 X 座標 d2.w 上端 Y 〃 d3.w 右端 X 〃 d4.w 下端 Y 〃 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 座標指定が異常 -3 指定座標は現在のモードでは使用不可 グラフィック画面のクリッピング範囲を設定する. IOCS $b5~$bf に対して有効. d1.w ≦ d3.w かつ d2.w ≦ d4.w でなければならない. ============================================================================== $b5 _WIPE グラフィック画面のクリア 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 グラフィック画面をクリアする. ============================================================================== $b6 _PSET グラフィック画面のポイントセット 引数 a1.l パラメータバッファのアドレス (0,a1) X 座標 (2,a1) Y 〃 (4,a1) パレットコード 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 指定パレットコードは現在のモードでは使用不可 グラフィック画面に点を描画する. ============================================================================== $b7 _POINT グラフィック画面のポイントゲット 引数 a1.l パラメータバッファのアドレス (0,a1) X 座標 (2,a1) Y 〃 (4,a1) (パレットコード) 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 グラフィック画面の指定の点のパレットコードを調べる. 指定座標がクリッピング範囲外であった場合、パレットコードは常に 0 が返る. ============================================================================== $b8 _LINE グラフィック画面のライン 引数 a1.l パラメータバッファのアドレス (0,a1) 始点 X 座標 (2,a1) 〃 Y 〃 (4,a1) 終点 X 〃 (6,a1) 〃 Y 〃 (8,a1) パレットコード (10,a1) ラインスタイル 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 指定パレットコードは現在のモードでは使用不可 グラフィック画面に線を描画する. ============================================================================== $b9 _BOX グラフィック画面のボックス 引数 a1.l パラメータバッファのアドレス (0,a1) 始点 X 座標 (2,a1) 〃 Y 〃 (4,a1) 終点 X 〃 (6,a1) 〃 Y 〃 (8,a1) パレットコード (10,a1) ラインスタイル 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 指定パレットコードは現在のモードでは使用不可 グラフィック画面に長方形を描画する. ============================================================================== $ba _FILL グラフィック画面のボックスフィル 引数 a1.l パラメータバッファのアドレス (0,a1) 始点 X 座標 (2,a1) 〃 Y 〃 (4,a1) 終点 X 〃 (6,a1) 〃 Y 〃 (8,a1) パレットコード 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 指定パレットコードは現在のモードでは使用不可 グラフィック画面に塗り潰した長方形を描画する. ============================================================================== $bb _CIRCLE グラフィック画面のサークル 引数 a1.l パラメータバッファのアドレス (0,a1) 中心 X 座標 (2,a1) 〃 Y 〃 (4,a1) 半径 (6,a1) パレットコード (8,a1) 円弧開始角度(負数で扇形を描画) (10,a1) 〃 終了〃 ( 〃 ) (12,a1) 比率 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 指定パレットコードは現在のモードでは使用不可 グラフィック画面に楕円を描画する. 円弧開始/終了角度は 0~360 で、負数を指定すると扇形(角度は値の絶対値) を描画する. 比率(以下 P)は 0~$ff00 で、描画する楕円の形は以下の通り. 0 ≦ P < 256 横長楕円 Rx = R ; Ry = R*P/256 256 < P ≦ $ff00 縦長楕円 Ry = R ; Rx = R*P/$ff00(P は 256 単位で切捨て) P = 256 真円 Rx = Ry = R ============================================================================== $bc _PAINT グラフィック画面のペイント 引数 a1.l パラメータバッファのアドレス (0,a1) X 座標 (2,a1) Y 〃 (4,a1) パレットコード (6,a1) 作業領域開始アドレス (10,a1) 〃 終了〃 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 指定パレットコードは現在のモードでは使用不可 グラフィック画面を塗り潰す. 作業領域は偶数番地から始まる必要があり、不足した場合はペイント途中で戻る. ============================================================================== $bd _SYMBOL グラフィック画面のシンボル 引数 a1.l パラメータバッファのアドレス 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 指定パレットコードは現在のモードでは使用不可 グラフィック画面に文字列を拡大して描画する. 座標は、回転角度が 0,90,180,270 の時それぞれ左上/左下/右下/右上隅を指定する. パラメータバッファの内容は以下の通り. offset size 0 1.w X 座標 2 1.w Y 〃 4 1.l 文字列のアドレス 8 1.b X 方向倍率 9 1.b Y 〃 10 1.w パレットコード 12 1.b 文字パターンの大きさ(0:12 ドット系 1:16〃 2:24〃) 13 1.b 回転角度(0:0°1:90°2:180°3:270°) ============================================================================== $be _GETGRM グラフィック画面のドット単位読み込み 引数 a1.l パラメータバッファのアドレス 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 座標指定が異常 -3 バッファの容量が小さすぎる グラフィック画面からバッファにドット単位で読み込む. パラメータバッファの内容は以下の通り. offset size 0 1.w 始点 X 座標 2 1.w 〃 Y 〃 4 1.w 終点 X 〃 6 1.w 〃 Y 〃 8 1.l バッファ開始アドレス 12 1.l 〃 終了〃 ============================================================================== $bf _PUTGRM グラフィック画面のドット単位書き込み 引数 a1.l パラメータバッファのアドレス 返値 d0.l = 0 正常終了 -1 グラフィック使用不可 -2 座標指定が異常 -3 バッファの容量が小さすぎる バッファからグラフィック画面にドット単位で書き込む. パラメータバッファの内容は以下の通り. offset size 0 1.w 始点 X 座標 2 1.w 〃 Y 〃 4 1.w 終点 X 〃 6 1.w 〃 Y 〃 8 1.l バッファ開始アドレス 12 1.l 〃 終了〃 ============================================================================== $c0 _SP_INIT スプライト初期化 返値 d0.l = 0 正常終了 -1 画面モードが不正 スプライト画面を初期化する. ============================================================================== $c1 _SP_ON スプライト表示 返値 d0.l = 0 正常終了 -1 画面モードが不正 スプライト画面を表示する. ============================================================================== $c2 _SP_OFF スプライト消去 返値 d0.l = 0 正常終了 -1 画面モードが不正 スプライト画面を表示しない. ============================================================================== $c3 _SP_CGCLR スプライトパターンのクリア 引数 d1.l パターンコード(0~255) 返値 d0.l = 0 正常終了 -1 画面モードが不正 指定した PCG をクリアする. クリアするパターンの大きさは 128 バイト. ============================================================================== $c4 _SP_DEFCG スプライトパターンの定義 引数 d1.l パターンコード(0~255) d2.l パターンの大きさ(0:8x8 1:16x16) a1.l パターンデータのアドレス 返値 d0.l = 0 正常終了 -1 画面モードが不正 指定した PCG のパターンを定義する. パターンの大きさは d2.l = 0 の時 32 バイト、d2.l = 1 の時 128 バイト. ============================================================================== $c5 _SP_GTPCG スプライトパターンの読み込み 引数 d1.l パターンコード(0~255) d2.l パターンの大きさ(0:8x8 1:16x16) a1.l バッファのアドレス 返値 d0.l = 0 正常終了 -1 画面モードが不正 指定した PCG のパターンを読み込む. バッファは d2.l = 0 の時 32 バイト、d2.l = 1 の時 128 バイト必要. ============================================================================== $c6 _SP_REGST スプライトレジスタの設定 引数 d1.l 垂直帰線期間検出/スプライト番号 bit 31 0:垂直帰線期間検出後設定 1:検出しない bit 6~0 スプライト番号(0~127) d2.l X 座標(0~1023 16 で左端に表示される) d3.l Y 〃 (〃 〃 上端〃 ) d4.l パターンコード bit 15 縦方向反転指定(0:反転しない 1:する) bit 14 横〃 ( 〃 ) bit 11~ 8 パレットブロック指定(0~15) bit 7~ 0 パターンコード(0~255) d5.l プライオリティ d5.l = 0 スプライトを表示しない 1 BG0 < BG1 < SP 2 BG0 < SP < BG1 3 SP < BG0 < BG1 返値 d0.l = 0 正常終了 -1 画面モードが不正 スプライトレジスタを設定する. d2.l/d3.l/d4.l/d5.l を -1 にすると設定を変更しないが、始めての設定時に は -1 を指定してはいけない. ============================================================================== $c7 _SP_REGGT スプライトレジスタの読み出し 引数 d1.l スプライト番号(0~127) 返値 d0.l = 0 正常終了 -1 画面モードが不正 d2.l X 座標 d3.l Y 〃 d4.l パターンコード d5.l プライオリティ スプライトレジスタを読み出す. ============================================================================== $c8 _BGSCRLST バックグラウンドスクロールレジスタの設定 引数 d1.l 垂直帰線期間検出/バックグラウンドの指定 bit 31 0:垂直帰線期間検出後設定 1:検出しない bit 0 BG 番号(0/1) d2.l X 座標(0~1023) d3.l Y 〃 (〃 ) 返値 d0.l = 0 正常終了 -1 画面モードが不正 バックグラウンドスクロールレジスタを設定する. d2.l/d3.lを -1 にすると 設定を変更しないが、始めての設定時には -1 を指定してはいけない. ============================================================================== $c9 _BGSCRLGT バックグラウンドスクロールレジスタの読み出し 引数 d1.l バックグラウンドの指定(0/1) 返値 d0.l = 0 正常終了 -1 画面モードが不正 d2.l X 座標 d3.l Y 〃 バックグラウンドスクロールレジスタを読み出す. ============================================================================== $ca _BGCTRLST バックグラウンドコントロールレジスタの設定 引数 d1.l バックグラウンドの指定(0/1) d2.l テキストページの指定(0/1) d3.l 表示/非表示指定(0:非表示 1:表示) 返値 d0.l = 0 正常終了 -1 画面モードが不正 バックグラウンドコントロールレジスタを設定する. d2.l/d3.lを -1 にする と設定を変更しないが、始めての設定時には -1 を指定してはいけない. ============================================================================== $cb _BGCTRLGT バックグラウンドコントロールレジスタの読み出し 引数 d1.l バックグラウンドの指定(0/1) 返値 d0.l = 0 テキストページ 0、非表示 1 〃 0、 表示 2 〃 1、非表示 3 〃 1、 表示 -1 画面モードが不正 バックグラウンドコントロールレジスタを読み出す. ============================================================================== $cc _BGTEXTCL バックグラウンドテキストのクリア 引数 d1.l テキストページの指定(0/1) d2.l パターンコード 返値 d0.l = 0 正常終了 -1 画面モードが不正 バックグラウンド画面の指定したテキストページをパターンコードで埋める. ============================================================================== $cd _BGTEXTST バックグラウンドテキストの設定 引数 d1.l テキストページの指定(0/1) d2.l X 座標(0~63) d3.l Y 〃 ( 〃 ) d4.l パターンコード 返値 d0.l = 0 正常終了 -1 画面モードが不正 バックグラウンド画面のテキストページにパターンコードを設定する. ============================================================================== $ce _BGTEXTGT バックグラウンドテキストの読み出し 引数 d1.l テキストページの指定(0/1) d2.l X 座標(0~63) d3.l Y 〃 ( 〃 ) 返値 d0.l = -1 画面モードが不正 その他 パターンコード バックグラウンド画面のテキストページからパターンコードを読み出す. ============================================================================== $cf _SPALET スプライトパレットの設定 引数 d1.l 垂直帰線期間検出/パレットコード bit 31 0:垂直帰線期間検出後設定 1:検出しない bit 3~ 0 パレットコード(0~15 若しくは 16~255) d2.l パレットブロック(1~15 若しくは 0) d3.l カラーコード(d3.l = -1 の時カラーコードを調べる) 返値 d0.l = -1 画面モードが不正 -2 パレットブロック 0 を設定/収得しようとした その他 変更前の設定 スプライトパレットを設定する. パレットブロックに 0 を指定した場合は、パレットコードをパレット先頭か らの通し番号で指定する事が出来る. ただし、パレットブロック 0 は指定で きないので、パレットコードは 16 以上に限る. 垂直帰線期間を検出せずにパレットを設定すると、画面がちらつく. ============================================================================== $d3 _TXXLINE テキスト画面の水平ライン 引数 a1.l パラメータバッファのアドレス (0,a1) テキストプレーン(0~3) (2,a1) X 座標 (4,a1) Y 〃 (6,a1) X 方向の長さ (8,a1) ラインスタイル(下位バイトのみ有効) テキスト画面に垂直線を描画する. ROM IOCS version 1.3 若しくは IOCS.X 常駐時は、テキストプレーンの指定 において最上位ビットを 1 にすることにより、複数プレーンに同時に描画す る事が出来る. bit 0~3 がプレーン0~3に対応する. また、呼び出された時 にテキスト同時アクセス機能が有効になっていれば、テキストプレーンの指定 は無視され、設定されていたプレーンに描画される. ============================================================================== $d4 _TXYLINE テキスト画面の垂直ライン 引数 a1.l パラメータバッファのアドレス (0,a1) テキストプレーン(0~3) (2,a1) X 座標 (4,a1) Y 〃 (6,a1) Y 方向の長さ (8,a1) ラインスタイル(下位バイトのみ有効) テキスト画面に水平線を描画する. テキストプレーンの指定は _TXXLINE と同じ. ============================================================================== $d5 _TXLINE テキスト画面のライン 引数 a1.l パラメータバッファのアドレス (0,a1) テキストプレーン(0~3) (2,a1) 始点 X 座標 (4,a1) 〃 Y 〃 (6,a1) X 方向の長さ (8,a1) Y 〃 (10,a1) ラインスタイル(下位バイトのみ有効) テキスト画面に線を描画する. テキストプレーンの指定は _TXXLINE と同じ. CRTC のビットマスク機能を使用しているので、マウスカーソルはオフにして このコールを呼び出ること. この IOCS コールは ROM IOCS version 1.3 若しくは IOCS.X 常駐時のみ使用 可能. ============================================================================== $d6 _TXBOX テキスト画面のボックス 引数 a1.l パラメータバッファのアドレス (0,a1) テキストプレーン(0~3) (2,a1) X 座標 (4,a1) Y 〃 (6,a1) X 方向の長さ (8,a1) Y 〃 (10,a1) ラインスタイル(下位バイトのみ有効) テキスト画面に長方形を描画する. テキストプレーンの指定は _TXXLINE と同じ. ============================================================================== $d7 _TXFILL テキスト画面のボックスフィル 引数 a1.l パラメータバッファのアドレス (0,a1) テキストプレーン(0~3) (2,a1) X 座標 (4,a1) Y 〃 (6,a1) X 方向の長さ (8,a1) Y 〃 (10,a1) ラインスタイル テキスト画面に塗り潰した長方形を描画する. テキストプレーンの指定は _TXXLINE と同じ. ラインスタイルは、上位・下位バイトでそれぞれ偶数ライン目・奇数ライン目 の水平方向のラインスタイルを指定する. ============================================================================== $d8 _TXREV テキスト画面の反転 引数 a1.l パラメータバッファのアドレス (0,a1) テキストプレーン(0~3) (2,a1) X 座標 (4,a1) Y 〃 (6,a1) X 方向の長さ (8,a1) Y 〃 テキスト画面の指定範囲を反転する. ROM IOCS version 1.3 若しくは IOCS.X 常駐時、呼び出された時にテキスト 同時アクセス機能が有効になっていれば、テキストプレーンの指定は無視され、 設定されていたプレーンに描画される. ============================================================================== $df _TXRASCPY テキスト画面のラスターコピー 引数 d1.hb コピー元ラスタ番号 d1.b コピー先〃 d2.w コピーラスタ数 d3.hb ポインタ移動方向(0:下方向 -1:上方向) d3.b テキストプレーン(bit 0~3 がプレーン 0~3 に対応する) テキスト画面の指定範囲をラスタコピーする. ============================================================================== $f0 _OPMDRV OPMDRV 制御 引数 d1.l 機能番号 音源ドライバ OPMDRV.X で追加されたファンクションコールを呼び出す. 引数/返値は機能番号によって異なる. ============================================================================== $f1 _RSDRV 拡張 RS-232C 制御 引数 d2.hb AUX 番号(0~5) d2.b 機能番号($30~$39) d2.b = $30~$35 指定したポートで直接 IOCS $30~$35 の 機能を実行する. $36,$37 d1.l = バッファサイズ a1.l = バッファアドレス 指定ポートの受信バッファを設定する. $38,$39 未解析. 返値 d2.b = $36,$37 の時 d1.w = 変更前のバッファサイズ a1.l = 変更前のバッファアドレス RSDRV.SYS で追加されたファンクションコールを呼び出す. 詳細不明. ============================================================================== $f2 _A_JOYGET アナログジョイスティック制御 引数 d1.l 機能番号 d2.w モード(d1.l = 1 の時) d2.w = 0 デジタル 1 アナログ -1 現在の設定を調べる d2.w 通信速度(d1.l = 2 の時) d2.w = 0 最高速度 1 最高速度の1/2 2 〃 1/3 3 〃 1/4 -1 現在の速度を調べる a1.l バッファアドレス(d1.l = 0 の時のみ) 返値 d1.l = 0 の時、ステータス(-1 でエラー) 1 の時、変更前のモード 2 の時、変更前の速度 アナログジョイスティックドライバ AJOY.X で追加されたファンクション コールを呼び出す. d1.l = 0 の時、a1.l で指定したバッファにアナログジョイスティックのデー タを読み込む. ジョイスティックデータの内容は以下の通り. offset size 0 1.w スティック上下(0:上~255:下) 2 1.w 〃 左右(0:左~255:右) 4 1.w スロットル 6 1.w オプション 8 1.w トリガ(押し下げ状態でビットが0になる) bit 11 A bit 10 B bit 9 A' bit 8 B' bit 7 A or A'(どちらかを押していれば0) bit 6 B or B'( 〃 ) bit 5 C bit 4 D bit 3 E1 bit 2 E2 bit 1 スタート bit 0 セレクト d1.l = 1 の時、ジョイスティックのモードを変更する. d1.l = 2 の時、ジョイスティックの通信速度を変更する. 最高速度に設定し た場合、ジョイスティックをリセットしない限り他の速度に変更出来なくなる. ============================================================================== $f3 _MUSICDRV MUSICDRV 制御 引数 d1.l 機能番号 音源ドライバ MUSICDRV.X で追加されたファンクションコールを呼び出す. 引数/返値は機能番号によって異なる. ============================================================================== $f5 _SCSIDRV SCSI IOCS 引数 d1.l 機能番号 SCSI IOCS で追加されたファンクションコールを呼び出す. 引数/返値は機能番号によって異なる. ============================================================================== $fd _ABORTRST アボートする為に環境を再設定する アボートするための環境を再設定する. OS で使用する. ============================================================================== $fe _IPLERR 再起動する 起動時のエラーで再起動する時に使用する. 通常は使用しない. ============================================================================== $ff _ABORTJOB アボート アボートする. OS で使用する. ==============================================================================