その他
PC-6001/mkII/6601用拡張漢字ROM PC-6601-01 デコード部分通常PC-6001のI/Oポートは8Bitなのですがコレは16Bit(256KBit*1ワード)として制御します。 また使用ポートは0FCH-0FFHを使用しています。 0FCH:Bit7=漢字ROMのアクセス許可 0=許可,1=禁止 Bit6-0=漢字ROMの上位アドレス 0FDH:漢字ROMの下位データ?(8Bit) 0FEH:漢字ROMの上位データ?(8Bit) 0FFH:漢字ROMを読み出すときに000H、読み終わったら0FFH また、制御はPC-6601はKANJI文でサポートしており、PC-6001/mkIIはソフトを組まないといけません。 PC−6001のポート 080H:RS−232C用8251 データ 081H:RS−232C用8251 コントロール 090H:8225 PA (入出力 8049のB7−B0) 091H:8225 PB (出力 プリンタデータ D7−D0) 092H:8225 PC Bit7:OBFA (入力)8049の/INT Bit6:ACKA (出力)8049の/RD Bit5:IBFA (入力)8049のT0 Bit4:STBA (出力)8049の/WR Bit3:INTRA (入力)8049??? Bit2:/CGSW (出力)1=CG Off、0=CG On Bit1:/CRTKILL(出力)1=表示する、0=表示しない Bit0:PRT /STB(出力) 093H:8225 CW 0A0H:PSG レジスタ 0A1H:PSG リードデータ 0A2H:PSG ライトデータ 0A3H:PSG インアクティブ 0B0H:システム Bit7: Bit6: Bit5: Bit4: Bit3:CMT モーター (出力)1=On、0=Off Bit2:VRAMアドレス (出力) 00=0C000H Bit1:VRAMアドレス (出力) 01=0E000H 10=08000H 11=0A000H Bit0:タイマ割り込み (出力)1=On、0=Off 0B0H:PRT BUSY Bit7:− Bit6:− Bit5:− Bit4:− Bit3:− Bit2:− Bit1:1=READY、0=BUSY Bit0:− 0D0H:FDD PC−6031 8255 PA 0D1H:FDD PC−6031 8255 PB 0D2H:FDD PC−6031 8255 PC 0D3H:FDD PC−6031 8255 CW
考え中のモノ(VDP)家にある部品でできるだけ手を抜くとこんな感じになるかなと思っただけで 当然未完成です。
上の回路図は某ベクタースキャンのジョイスティックですが動作確認していません またコネクタ部分を加工しないと 本体にささりません 参考資料モドキっていうことでこれを元に作って本体を壊しても私は何の責任も持ちません。 それと以前の回路図には配線する為のピンが表記されていませんでした(Mr.Tさん御指摘ありがとう) でもJOYSTICKを作るつもりですか?
VIC−1001 6560のレジスタ $9000:CR0 Bit7:インターレーススイッチ 1=On、0=Off Bit6−0:テキストエリアの水平位置 $9001:CR1 テキストエリアの垂直位置 $9002:CR2 Bit7:カラーVRAMのA9 Bit6−0:テキスト文字数 $9003:CR3 Bit7:ラスタースキャンの位置 D0 Bit1−6:テキストの列 Bit0:文字モード 1=8*16ドット、0=8*8ドット $9004:CR4 Bit7:ラスタースキャンの位置 D8 Bit6:ラスタースキャンの位置 D7 Bit5:ラスタースキャンの位置 D6 Bit4:ラスタースキャンの位置 D5 Bit3:ラスタースキャンの位置 D4 Bit2:ラスタースキャンの位置 D3 Bit1:ラスタースキャンの位置 D2 Bit0:ラスタースキャンの位置 D1 $9005:CR5 Bit7:VRAMのA12 Bit6:VRAMのA11 Bit5:VRAMのA10 Bit4:VRAMのA9 Bit3:キャラクタジェネレータのセレクト3 Bit2:キャラクタジェネレータのセレクト2 Bit1:キャラクタジェネレータのセレクト1 Bit0:キャラクタジェネレータのセレクト0 $9006:CR6 ライトペンの水平ラッチポジション $9007:CR7 ライトペンの垂直ラッチポジション $9008:CR8 POTX $9009:CR9 POTY $900A:CRA Bit7:サウンドジェネレータ1のスイッチ 1=On、0=Off Bit6−0:サウンドジェネレータ1の周波数 $900B:CRB Bit7:サウンドジェネレータ2のスイッチ 1=On、0=Off Bit6−0:サウンドジェネレータ2の周波数 $900C:CRC Bit7:サウンドジェネレータ3のスイッチ 1=On、0=Off Bit6−0:サウンドジェネレータ3の周波数 $900D:CRD Bit7:ノイズジェネレータのスイッチ 1=On、0=Off Bit6−0:ノイズジェネレータの周波数 $900E:CRE Bit7−4:マルチカラーモードの補助色 Bit3−0:オーディオボリューム $900F:CRF Bit7−4:バックグラウンドカラー Bit3:リバーススイッチ 1=通常、0=反転 Bit2−0:ボーダーカラー VRAM(スクリーンRAM) VICはRAMの容量によってVRAMの位置の設定が変ります。 拡張RAM(3KRAMを除く)を付けていない場合は$1E00(7680)に設定されます。 そこにキャラクタジェネレータで登録されているコードを書きます。 またキャラクタジェネレータとVRAMは重複してもかまいません。 ただし、重なっている部分にデータを書き込むと画面にもコードして現れるので注意が必要です。 また、カラーVRAMでデータ(0−8)をセットするとVRAMに色がつけられます。 アドレスは設定で$9600にセットされています。 VRAMアドレス:000* ***0|0000 0000B ;*=CR5のBit7−4 カラーVRAMアドレス:1001 01*0|0000 0000B ;*=CR2のBit7 キャラクタージェネエータセレクト:0000B=$8000 0001B=$8400 0010B=$8800 0011B=$8C00 1000B= − 1001B= − 1010B= − 1011B= − 1100B=$1000 1101B=$1400 1110B=$1800 1111B=$1C00 よくBASICプログラムでは$9005:F0から$9005:FFに切り換えているものがありますが、 これはVRAMは$1E00で、キャラクタジェネレータを$8000から VRAMは$1E00で、キャラクタジェネレータを$1C00にしています。 POKE36869,255 POKE36869,240 また、キャラクタジェネレータが$1C00からすると範囲は$1C00−$2BFFまでになります。 更にVRAMは$1E00から$1FFFで$2000以降は空き領域になります(拡張RAM,+3KRAMの場合) つまりキャラジェネはRAM領域の$1C00−$1DFFの$200で$40(64)個の定義が出来ます。
PET2001(8型) 見分け方 電源を入れると”*** COMMODORE ***”とでるのがいわゆる8型タイプ(旧バージョン) ”*”が”#”になっていると新バージョンとなります また新バージョンを起動してWAIT6502,1を実行すると... バグ 配列の大きさが256超えるとループする(例 A(260)はA(4)と同じになる) RIGHT$(X$、0)、LEFT$(X$、0)の様に場合パラメータを0にするとエラーになる(新バージョンでは””で長さ0で返す) バグではないのですがBASIC部分のPEEKが使えない(新バージョンでは使えます) RND(0)がほとんど乱数として使えない(新バージョンはタイマを使用した乱数となっている) IF E=F OR G=H...がIF E=FOR G=H...として認識される(リストはスペースは空いている) SPC(0)がSPC(256)と同じになる TABやPOSで画面表示範囲外の指定だと正常に動作しない 主なワーク(10進数) 0000−0002:USR関数 $4C,mm,nn 0003:使用中のI/Oアドレス 0008−0009:BASIC行番号 0010−0089:インプットバッファ 0090:カウンタ 0091:$00、$22 0092:インプット・バッファの長さ 0093:配列フラグ(1文字目の文字) 0094:変数タイプ 1=ストリング、0=数値 0095:整変数フラグ 128=整数型、0=実数型 0098:入力の種類 152=READ,64=GET、0=INPUT 0099:TANの符号 0102−0103:ストリング用ワークエリア 0104−0111:変数ポインタ 0116−0121:引数レジスタ 0122−0123:BASICプログラムの先頭 0124−0125:変数エリアの先頭 0126−0127:配列エリアの先頭 0128−0129:変数または配列エリアの最後 0130−0131:ストリングエリアの先頭 0132−0133:1つ前のストリングエリアの先頭 0134−0135:RAMエリアの最後+1 0136−0137:実行中のBASIC行番号 0138−0139:コンティニュー用行番号 0140−0141:コンティニュー用ポインタ 0146−0147:入力用ポインタ 0148−0149:使用中変数名 0150−0151:使用中変数ポインタ 0159−0160:ストリング用ポインタ 0161:ストリングの長さ 0156−0158:関数用 $4C,mm,nn 0172−0173:ブロック転送用ポインタ0 0174−0175:ブロック転送用ポインタ1 0176−0181:実数レジスタ0 0182:実数レジスタ0の符号 0183:実数レジスタ0のシフトカウンタ 0184−0189:実数レジスタ1 0190:オーバーフロー 0191:符号のコピー 0192−0193:実数ストリング変換ポインタ 0194−0202:0194が次の文字、0200がポインタの指す内容 0218−0222:RND 0224−0225:カーソルのある行のポインタ 0226:カーソルの位置 0234:’”’モード 0238:ファイル名の長さ 0239:倫理機番 0240:ファイルセカンド アドレス 0241:物理機番 0242:1行の文字数 0243−0244:テープバッファの先頭 0245:カーソルのある行(画面) 0246:最後に押されたキー 0247−0248:ロード、セーブ用ポインタ 0249−0250:ファイル名ポインタ 0251:インサート用カウンタ 0256−0511:スタックエリア 0512−0514:TI(タイマー) 0515:キーストローク 0516:シフトキー 1=オン 0517−0518:TI補正用カウンタ 0519−0520:カセット用インタラプト 0521:PIAの内容 0523:1=ベリファイ、0=ロード 0524:STの値 0525:キーバッファの文字数 0526:RVS 1=オン、0=オフ 0527−0536:キーバッファ 0537−0538:IRQ ベクタ 0539−0540:BRK ベクタ 0547:キーコード 0548:カーソルの点滅 0=オン 0549:カーソル用カウンタ 0550:カーソルにある文字 0551:カーソルの点滅 0578−0587:倫理機番表 0588−0597:物理機番表 0598−0609:セカンドアドレス表 0610:ファイル数 0611:システム入力 0=キーボード 0612:システム出力 3=画面 0613:テープ パリティ 0621:テープブロック 0624:テープカウンタ(WRITE) 0625:テープバッファ#1 0626:テープバッファ#2 0627:テープカウンタ(READ) 0628−0629:テープエラー用 0630−0631:テープエラーポインタ 0632:テープフラグ(READ) 0633:チェックサム 0634−0825:テープバッファ#1 0826−1017:テープバッファ#2 1018−1023:空き 32768−33767:VRAM 59408−59411:6520(PIA) 59424−59427:6520(PIA) 59456−59471:6522(VIA)
主なMSX1 BIOSルーチン RST・割り込み関係 00000H:CHKRAM RAMのチェックとメモリスロットの状態をチェック 初期化ルーチンへジャンプします。 入力 :なし Out:なし 変化:すべて 00004H:キャラクタジェネレータ(フォント)の下位アドレス 00005H:キャラクタジェネレータ(フォント)の上位アドレス 00006H:VDPアクセス リードポート 00007H:VDPアクセス ライトポート 00008H:SYNCHR HLの指しているデータと第1バイトと比較します。 第1バイトはRST 008Hの後すぐにくるデータです。 <例>0C000Hのデータと’A’を比較する LD HL,0C000H RST 008H DB ’A’ 比較が違っていればSyntax errorを出し 比較が同じならCHRGTR(0010H)へジャンプします。 HLは+1されます。 BASIC用 入力:HL=データポインタ 第1バイト=比較するデータ 出力:HL=データポインタ+1 Cf=1 データが数字 Zf=1 ステートメントの終わり(エンドマーク(000H)か’:’(03AH)) 変化:すべて 0000C:RDSLT Aで指定されるメモリスロットから、メモリの内容を読み込みます。 DI(割り込み禁止)が掛かるので場合によっては このルーチンの実行後EI(割り込み許可)を実行する 入力:HL=読み込むアドレス A=スロットデータ Bit7:F 1=拡張スロット、0=基本スロット Bit6:− Bit5:− Bit4:− Bit3:E 拡張スロット D1 Bit2:E 拡張スロット D0 Bit1:P 基本スロット D1 Bit0:P 基本スロット D0 出力:A=読み込んだデータ 変化:AF,BC,DE 00010H:CHRGTR BASICテキストの次の文字、又は中間言語を取り込む HLにアドレス、Aには文字が入る 入力:HL=アドレス 出力:HL=アドレス+1 A=文字またはトークン Zf=1ステートメントの終わり 変化:AF,HL 00014H:WRSLT Aで指定されるメモリスロットのメモリにEの内容を書き込み。 DI(割り込み禁止)が掛かるので場合によっては このルーチンの実行後EI(割り込み許可)を実行する 入力:HL=書き込むアドレス A=スロットデータ Bit7:F 1=拡張スロット、0=基本スロット Bit6:− Bit5:− Bit4:− Bit3:E 拡張スロット D1 Bit2:E 拡張スロット D0 Bit1:P 基本スロット D1 Bit0:P 基本スロット D0 E=書き込むデータ 出力:なし 変化:AF,BC,D 00018H:OUTDO 現在使用中のデバイスへデータをおくります。 入力:A PRTFLG(0F416H)=000H以外ならプリンタ出力 PTRFIL(0F864H)=000H以外ならPTRFILで指定するファイルへ出力 出力:なし 変化:なし 0001CH:CALSLT インタースロットコール IY上位の値によりメモリスロットを選び、メモリ上のプログラムをコールします。 入力:IYの上位=スロットデータ Bit7:F 1=拡張スロット、0=基本スロット Bit6:− Bit5:− Bit4:− Bit3:E 拡張スロット D1 Bit2:E 拡張スロット D0 Bit1:P 基本スロット D1 Bit0:P 基本スロット D0 IX=コールするアドレス 出力:不明(コールするルーチンによる) 変化:不明(コールするルーチンによる) 00020H:DCOMPR HLとDEの比較 入力:HL=データ1 DE=データ2 出力:Cf=1 HL<DE Zf=1 HL=DE 変化:AF 00024H:ENASLT Aで指定されるメモリスロットを使用可能にします。 入力:HL=使用するアドレス A=スロットデータ Bit7:F 1=拡張スロット、0=基本スロット Bit6:− Bit5:− Bit4:− Bit3:E 拡張スロット D1 Bit2:E 拡張スロット D0 Bit1:P 基本スロット D1 Bit0:P 基本スロット D0 出力:なし 変化:すべて 00028H:GETYPR FACのタイプを返します。 入力:FAC 出力: Sf=1 整数型 Zf=1 文字列型 P/Vf=0 単精度 Cf=0 倍精度 変化:AF 0002BH:IDバイト0 Bit7:割り込み周期 1=1/50秒、0=1/60秒 Bit6:Y2 Y=000:年−月−日 Bit5:Y1 Y=001:月−日−年 Bit4:Y0 Y=002:日−月−年 Bit3:C3 C=0000 日本キャラクタ Bit2:C2 C=0001 インターナショナル Bit1:C1 Bit0:C0 0002CH:IDバイト1 Bit7:BV3 BV=000 日本版BASIC Bit6:BV2 BV=001 インターナショナル BASIC Bit5:BV1 Bit4:BV0 Bit3:K3 K=0000 日本のキーボード Bit2:K2 K=0001 インターナショナルのキーボード Bit1:K1 K=0002 フランスのキーボード Bit0:K0 K=0003 イギリスのキーボード K=0004 ドイツのキーボード 00030H:CALLF スロットを切り替えてプログラムコールします。 第1バイトはRST 008Hの後すぐにくるデータです。 <例>0C000Hのデータと’A’を比較する LD HL,0C000H RST 008H DB ’A’ 入力:第1バイト=スロットデータ Bit7:F 1=拡張スロット、0=基本スロット Bit6:− Bit5:− Bit4:− Bit3:E 拡張スロット D1 Bit2:E 拡張スロット D0 Bit1:P 基本スロット D1 Bit0:P 基本スロット D0 第2バイト=コールスするアドレス下位 第3バイト=コールスするアドレス上位 出力:不明(コールするルーチンによる) 変化:不明(コールするルーチンによる) 00038H:KEYINT INTベクタです(NTSC=1/60秒毎、PAL=1/50秒毎) 入力:なし 出力:なし 変化:なし −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− I/O初期設定 0003BH:INIIO I/Oデバイスの初期化を行います。 入力:なし 出力:なし 変化:すべて 0003EH:INIFNK ファンクションキーの初期化を行います。 入力:なし 出力:なし 変化:すべて −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− VPDアクセス 00041H:DISSCR 画面を表示しない 入力:なし 出力:なし 変化:AF,BC 00044H:ENASCR 画面を表示する 入力:なし 出力:なし 変化:AF,BC 00047H:WRTVDP VDPレジスタ 書き込み 入力:C=VDPレジスタ B=データ 出力:なし 変化:AF,BC 0004AH:RDVRM 1バイト VRAMリード 入力:HL=VRAMアドレス 出力:A=VRAMの内容 変化:AF 0004DH:WRTVRM 1バイト VRAMライト 入力:HL=VRAMアドレス A=データ 出力:なし 変化:AF 00050H:SETRD VRAMを読み込み状態にする 入力:HL 出力:なし 変化:AF 00053H:SETWRT VRAMを書き込み状態にする 入力:HL 出力:なし 変化:AF 00056H:FILRVM VRAM FILL 入力:HL=VRAMアドレス BC=長さ A=データ 出力:なし 変化:AF,BC 00059H:LDIRMV VRAM−>メモリのブロック転送 入力:HL=VRAMアドレス DE=アドレス BC=長さ 出力:なし 変化:すべて 0005CH:LDIRVM メモリ−>VRAMのブロック転送 入力:HL=アドレス DE=VRAMアドレス BC=長さ 出力:なし 変化:すべて 0005FH:CHGMOD VDPのモードを設定します。 入力:A=0 テキストモード40×24 1 テキストモード32×24 2 ハイレゾリュージョンモード 3 マルチカラーローレゾリュージョンモード 出力:なし 変化:すべて 00062H:CHGCLR スクリーンの色を設定します。 入力:FORCLR(0F3E9H)=フォアグランドカラー BAKCLR(0F3E9H)=バックグラウンドカラー BDRCLR(0F3E9H)=ボーダーカラー 出力:なし 変化:すべて 00066H:NMI NMIベクタです(使用していません) 入力:なし 出力:なし 変化:なし 00069H:CLRSPR スプライトの初期化、全てのスプライト・パターンをヌルで埋め、 カラーはフォアグラウンドと同一、スプライトの垂直位置は209(表示をしない)に設定します。 入力:SCRMOD(0FCAFH)=スクリーンモード 出力:なし 変化:すべて 0006CH:INITXT テキストモード画面(40×24)の初期化 VDP及びワークエリアの設定を行います。 入力:LINL40(0F3AEH)=1行の幅 TATNAM(0F3B3H)=パターンネーム・テーブル TXTCGP(0F3B7H)=パターンジェネレータ・テーブル 出力:なし 変化:すべて 0006FH:INIT32 テキストモード画面(32×24)の初期化 VDP及びワークエリアの設定を行います。 入力:T32NAM(0F3BDH)=パターンネーム・テーブル T32COL(0F3BFH)=カラーテーブル T32CGP(0F3C1H)=パターンジェネレータ・テーブル T32ATR(0F3C3H)=スプライトアトリビュート・テーブル T32PAT(0F3C5H)=スプライトジェネレータ・テーブル 出力:なし 変化:すべて 00072H:INIGRP ハイレゾリューションモード画面の初期化 VDP及びワークエリアの設定を行います。 入力:GRPNAM(0F3C7H)=パターンネーム・テーブル GRPCOL(0F3C9H)=カラーテーブル GRPCGP(0F3CBH)=パターンジェネレータ・テーブル GRPATR(0F3CDH)=スプライトアトリビュート・テーブル GRPPAT(0F3CFH)=スプライトジェネレータ・テーブル 出力:なし 変化:すべて 00075H:INIMLT マルチカラー・ローレゾリューションモード画面の初期化 VDP及びワークエリアの設定を行います。 入力:MLTNAM(0F3D1H)=パターンネーム・テーブル MLTCOL(0F3D3H)=カラーテーブル MLTCGP(0F3D5H)=パターンジェネレータ・テーブル MLTATR(0F3D7H)=スプライトアトリビュート・テーブル MLTPAT(0F3D9H)=スプライトジェネレータ・テーブル 出力:なし 変化:すべて 00078H:SETTXT テキストモード画面(40×24)の初期化 VDPのみ設定を行います。 入力:LINL40(0F3AEH)=1行の幅 TATNAM(0F3B3H)=パターンネーム・テーブル TXTCGP(0F3B7H)=パターンジェネレータ・テーブル 出力:なし 変化:すべて 0007BH:SETT32 テキストモード画面(32×24)の初期化 VDPのみ設定を行います。 入力:T32NAM(0F3BDH)=パターンネーム・テーブル T32COL(0F3BFH)=カラーテーブル T32CGP(0F3C1H)=パターンジェネレータ・テーブル T32ATR(0F3C3H)=スプライトアトリビュート・テーブル T32PAT(0F3C5H)=スプライトジェネレータ・テーブル 出力:なし 変化:すべて 0007EH:SETGRP ハイレゾリューションモード画面の初期化 VDPのみ設定を行います。 入力:GRPNAM(0F3C7H)=パターンネーム・テーブル GRPCOL(0F3C9H)=カラーテーブル GRPCGP(0F3CBH)=パターンジェネレータ・テーブル GRPATR(0F3CDH)=スプライトアトリビュート・テーブル GRPPAT(0F3CFH)=スプライトジェネレータ・テーブル 出力:なし 変化:すべて 00081:SETMLT マルチカラー・ローレゾリューションモード画面の初期化 VDPのみ設定を行います。 入力:MLTNAM(0F3D1H)=パターンネーム・テーブル MLTCOL(0F3D3H)=カラーテーブル MLTCGP(0F3D5H)=パターンジェネレータ・テーブル MLTATR(0F3D7H)=スプライトアトリビュート・テーブル MLTPAT(0F3D9H)=スプライトジェネレータ・テーブル 出力:なし 変化:すべて 00084H:CALPAT スプライト・パターン・テーブルのアドレスを返します。 入力:A=スプライトNo.nn 出力:HL=スプライト・パターン・テーブル・アドレス 変化:AF,DE,HL 00087H:CALPAT スプライト・属性・テーブルのアドレスを返します。 入力:A=スプライトNo.nn 出力:HL=スプライト・属性・テーブル・アドレス 変化:AF,DE,HL 0008AH:GSPSIZ 現在のスプライト・サイズを返します。 入力:なし 出力: A=スプライト・サイズ(バイト数) Cf=1 16×16 0 16×16以外 変化:AF 0008DH:GRPPRT グラフィック画面に文字を表示します。 入力:A=キャラクタコード 出力:なし 変化:なし −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− PSGアクセス 00090H:GICINI PSGの初期化、PLAY文の初期化を行います。 入力:なし 出力:なし 変化:すべて 00093H:WRTPSG PSGレジスタにデータを書き込みます。 入力:A=PSG R#nn E=データ 出力:なし 変化:なし 00096H:RDPPSG PSGレジスタの内容を読み込みます。 入力:A=PSG R#nn 出力:A= PSG R#nnの内容 レジスタ なし 00099H:STRTMS バックグラウンド処理されるPLAY文の状態をチェックします。 実行中でなければ PLAY文の実行を開始します。 入力:なし 出力:なし 変化:すべて −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− コンソールアクセス 0009CH:CHSNS キーボード・バッファの状態をチェックを行います。 入力:なし 出力:Zf=1 バッファに文字が無い(空) 0 バッファに文字がある 変化:AF 0009FH:CHGET 1文字入力 (入力待ちあり) キーボードからキャラクタを取り込みます。 入力があるまで待ちます。 入力:なし 出力:A=入力されたキャラクタコード 変化:AF 000A2H:CHPUT 1文字表示 画面に1文字出力を行います。 CSRX,CSRYで位置を指定、コールすると次の位置が入ります。 入力:A=キャラクタコード CSRX CSRY 出力:なし 変化:なし 000A5H:LPTOUT 1文字プリンタ出力 プリンタに1文字出力を行います。 入力:A=キャラクタコード 出力:Cf=エラー(アボート) 変化:F 000A8H:LPTSTT プリンタステータスをチェック 入力:なし 出力:A=0FFH、Zf=1ならREADY A=000H、Zf=0ならNot READY 000ABH:CNVCHR グラフィック・ヘッダーバイトとコンバートコードのチェックを行います。 入力:A=キャラクタコード 出力:Cf=1、Zf=1 コンバートされたグラフィックコード Cf=1、Zf=0 コンバートされていない Cf=0 グラフィック・ヘッダーバイト 変化:AF 000AEH:PINLIN CR,STOPが入力される以前の文字列を、 常に画面の左端よりバッファに取り込みます。 入力:なし 出力:HL=バッファの先頭アドレス−1 Cf=1 STOPキーが押された 0 STOPキーが押されていない 変化:すべて 000B1H:INLIN CR,STOPが入力される以前の文字列を、 常に現在のカーソル位置から右側の文字列を バッファに取り込みます。 入力:なし 出力:HL=バッファの先頭アドレス−1 Cf=1 STOPキーが押された 0 STOPキーが押されていない 変化:すべて 000B4H:QINLIN ”? ”(03FH,020H)を出力してINLINへジャンプします。 入力:なし 出力:HL=バッファの先頭アドレス−1 Cf=1 STOPキーが押された 0 STOPキーが押されていない 変化:すべて 000B7H:BREAKX CTRL+STOPキーが押されているかチェックを行います。 割り込みを禁止されているときに使用します。 入力:なし 出力:Cf=1 CTRL+STOPキーが押されている 0 CTRL+STOPキーが押されていない 変化:AF 000C0H:BEEP ブザーを鳴らします 入力:なし 出力:なし 変化:すべて 000C3H:CLS 画面をクリアします 入力:なし 出力:なし 変化:AF,BC,DE 000C6H:POSIT カーソル位置を指定します。 入力:H=カーソルのX座標 L=カーソルのY座標 出力:なし 変化:AF 000C9H:FNKSB ファンクション・キーの表示をチェックし FNKFLG(0FBCEH)がアクティブなら表示 アクティブでなければ消します。 入力:FNKFLG(0FBCEH) 出力:なし 変化:すべて 000CCH:ERAFNK ファンクション・キーの表示を消します。 入力:なし 出力:なし 変化:すべて 000CFH:DSPFNK ファンクション・キーの表示を行います。 入力:なし 出力:なし 変化:すべて 000D2H:TOTEXT 画面をテキストモードにします。 BASICインタプリタ用 入力:なし 出力:なし 変化:すべて −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ゲームI/Oアクセス 000D5H:GTSTCK ジョイスティックの状態を返します。 入力:A=0 キーボードのカーソルキー 1 ジョイスティック#1 2 ジョイスティック#2 出力:A=ジョイスティックの方向 変化:すべて 000D8H:GTTRIG トリガボタンの状態を返します。 入力:A=0 スペースキー 1 ジョイスティック#1−A 2 ジョイスティック#1−B 3 ジョイスティック#2−A 4 ジョイスティック#2−B 出力:A=000H トリガボタンは押されていない 0FFH トリガボタンは押されている 変化:AF 000DBH:GTPAD タッチパッドの状態を返します。 入力:A=タッチパッドの番号(0−7) 出力:A=現在の値 変化:すべて 000DEH:GTPDL パドルの状態を返します。 入力:A=パドルの番号(1−12) 出力;A=パドルの値 レジスタ すべて −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− カセットテープアクセス 000E1H:TAPION モーターONの後、ヘッダ・ブロックを読み込みます。 入力:なし 出力:Cf=1 エラー(アボート) 変更:すべて 000E4H:TAPIN CMT1バイト リード テープからデータを読み込みます。 入力:なし 出力:A=入力データ Cf=1 エラー(アボート) 変化:すべて 000E7H:TAPIOF テープからの読み込みを停止します。 入力:なし 出力:なし 変化:なし 000EAH:TAPOON モーターONの後、ヘッダ・ブロックを書き込みます。 入力:A=0 ショート・ヘッダ 0以外 ロング・ヘッダ 出力:Cf=1 エラー(アボート) 変化:すべて 000EDH:TAPOUT CMT1バイト ライト テープにデータを書き込みます。 入力:A出力データ 出力:Cf=1 エラー(アボート) 変化:すべて 000F0H:TAPOOF テープへの書き込みを停止します。 入力:なし 出力:Cf=1 エラー(アボート) 変化:すべて 000F3H:STMOTR モーターの状態を設定します。 入力:A=000H モーターストップ 001H モーターオン 0FFH 現在の状態と反転する 出力:なし 変化:AF −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− BASICインタプリタ専用ルーチン 000F6H:LFTQ キューの残りバイトを返します。 000F9H:PUTQ キューへ1バイト送ります。 000FCH:RIGHTC ピクセルを右へ1つ動かします。 000FFH:LEFTC ピクセルを左へ1つ動かします。 00102H:UPC ピクセルを上へ1つ動かします。 00105H:TUOC ピクセルを上へ1つ動かします。 00108H:DOWNC ピクセルを下へ1つ動かします。 0010BH:TDOWNC ピクセルを下へ1つ動かします。 0010EH:SCALXY XYスケールを調整します。 00111H:MAPXYC 実アドレスの配置を調整します。 00114H:FETCHC 現在の実アドレスとパターンをフェッチします。 入力:なし 出力:HL=実アドレス A=マスクパターン 変化:AF,HL 00117H:STOREC 現在の実アドレスとパターンをストアします。 入力:HL=実アドレス A=マスクパターン 出力:なし 変化:なし 0011AH:SETATR 属性バイトを書き込みます。 0011DH:READC ピクセルの属性を読み込みます。 00120H:SETC ピクセルの属性を書き込みます。 00123H:NSETCX 水平方向に線を描きます。 00126H:GTASPC アスペクト比を返します。 入力:なし 出力:DE=256/アスペクト比 HL=256×アスペクト比の整数部分 00129H:PNTINI PAINT文の初期化を行います。 0012CH:ピクセルの右方向移動 0012FH:ピクセルの左方向移動 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− その他のルーチン 00132H:CHGCAP CAPランプの制御 入力:A=0 ランプを消灯 0以外 ランプの点灯 出力:なし 変化:AF 00135H:CHGSND 1Bitサウンドポートの制御を行います。 入力:A=0 OFF 0以外 ON 出力:なし 変化:AF 00138H:RSLREG 基本スロット・レジスタの状態を読み込みます。 入力:なし 出力:A=スロット・レジスタ 状態:A 0013BH:WSLREG 基本スロット・レジスタにデータを書き込む 入力:A=スロット・データ 出力:なし 変化:なし 0013EH:RDVDP VDPステータス・レジスタを読込みます。 入力:なし 出力:A=VDPステータス・レジスタ 変化:A 00141H:SNSMAT キーボード・マトリクスから指定したKEY#nnの値を読み込みます。 入力:A=KEY#nn 出力:A=KEY#nnのデータ (1=押されていない、0=押されている) 変化:AF 00144H:PHYDIO マスストレージデバイス(拡張用)の制御を行います。 入力:拡張ルーチンによる 出力:拡張ルーチンによる 変化:拡張ルーチンによる 00147H:FORMAT マスストレージデバイス(拡張用)の初期化を行います。 入力:拡張ルーチンによる 出力:拡張ルーチンによる 変化:拡張ルーチンによる 0014AH:ISFLIO デバイスI/Oの使用をチェック BASICインタープリタ用 入力:なし 出力:A=0 使用中 0以外 使用をしていない 変化:AF 0014DH:OUTDLP プリンタ出力 LPTOUTとの相違点 TABはスペースに変換 MSX仕様でないプリンタへ、ひらがなやグラフィックキャラクターを変換 エラー(アボート)になったら”Device I/O error”を出力 入力:A=プリント・データ 出力:なし 変化:F 00150H:GETVCP バックグランドでサウンド出力を行います。 BASICインタープリタ用 00153H:GETVC2 バックグランドでサウンド出力を行います。 BASICインタープリタ用 00156H:KILBUF キーボード・バッファをクリアします。 入力:なし 出力:なし 変化:HL 00159H:CALBAS BASICのあるスロットを強制コールします。 入力:IX=コールするアドレス 出力:ルーチンによる 変化:ルーチンによる
Home へ戻る