その他


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       d7:OBFA    (入力)8049の/INT       d6:ACKA    (出力)8049の/RD       d5:IBFA    (入力)8049のT0       d4:STBA    (出力)8049の/WR       d3:INTRA   (入力)8049???       d2:/CGSW   (出力)1=CG Off、0=CG On       d1:/CRTKILL(出力)1=表示する、0=表示しない       d0:PRT /STB(出力) 093H:8225 CW   0A0H:PSG レジスタ 0A1H:PSG リードデータ 0A2H:PSG ライトデータ 0A3H:PSG インアクティブ   0B0H:システム       d7:       d6:       d5:       d4:       d3:CMT モーター   (出力)1=On、0=Off       d2:VRAMアドレス   (出力) 00=0C000H       d1:VRAMアドレス   (出力) 01=0E000H                            10=08000H                            11=0A000H       d0:タイマ割り込み    (出力)1=On、0=Off   0B0H:PRT BUSY       d7:−       d6:−       d5:−       d4:−       d3:−       d2:−       d1:1=READY、0=BUSY       d0:−   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 d7:インターレーススイッチ 1=On、0=Off             d6−0:テキストエリアの水平位置     $9001:CR1 テキストエリアの垂直位置     $9002:CR2 d7:カラーVRAMのA9             d6−0:テキスト文字数     $9003:CR3 d7:ラスタースキャンの位置 D0             d1−6:テキストの列             d0:文字モード 1=8*16ドット、0=8*8ドット     $9004:CR4 d7:ラスタースキャンの位置 D8             d6:ラスタースキャンの位置 D7             d5:ラスタースキャンの位置 D6             d4:ラスタースキャンの位置 D5             d3:ラスタースキャンの位置 D4             d2:ラスタースキャンの位置 D3             d1:ラスタースキャンの位置 D2             d0:ラスタースキャンの位置 D1       $9005:CR5 d7:VRAMのA12             d6:VRAMのA11             d5:VRAMのA10             d4:VRAMのA9             d3:キャラクタジェネレータのセレクト3             d2:キャラクタジェネレータのセレクト2             d1:キャラクタジェネレータのセレクト1             d0:キャラクタジェネレータのセレクト0     $9006:CR6 ライトペンの水平ラッチポジション   $9007:CR7 ライトペンの垂直ラッチポジション     $9008:CR8 POTX   $9009:CR9 POTY     $900A:CRA d7:サウンドジェネレータ1のスイッチ 1=On、0=Off             d6−0:サウンドジェネレータ1の周波数     $900B:CRB d7:サウンドジェネレータ2のスイッチ 1=On、0=Off             d6−0:サウンドジェネレータ2の周波数     $900C:CRC d7:サウンドジェネレータ3のスイッチ 1=On、0=Off             d6−0:サウンドジェネレータ3の周波数     $900D:CRD d7:ノイズジェネレータのスイッチ 1=On、0=Off             d6−0:ノイズジェネレータの周波数     $900E:CRE d7−4:マルチカラーモードの補助色             d3−0:オーディオボリューム     $900F:CRF d7−4:バックグラウンドカラー             d3:リバーススイッチ 1=通常、0=反転             d2−0:ボーダーカラー    VRAM(スクリーンRAM)   VICはRAMの容量によってVRAMの位置の設定が変ります。   拡張RAM(3KRAMを除く)を付けていない場合は$1E00(7680)に設定されます。   そこにキャラクタジェネレータで登録されているコードを書きます。   またキャラクタジェネレータとVRAMは重複してもかまいません。   ただし、重なっている部分にデータを書き込むと画面にもコードして現れるので注意が必要です。   また、カラーVRAMでデータ(0−8)をセットするとVRAMに色がつけられます。   アドレスは設定で$9600にセットされています。          VRAMアドレス:000* ***0|0000 0000B ;*=CR5のd7−4     カラーVRAMアドレス:1001 01*0|0000 0000B ;*=CR2のd7         キャラクタージェネエータセレクト: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)個の定義が出来ます。    
主な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=スロットデータ       d7:F 1=拡張スロット、0=基本スロット       d6:−       d5:−       d4:−       d3:E 拡張スロット D1       d2:E 拡張スロット D0       d1:P 基本スロット D1       d0: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=スロットデータ       d7:F 1=拡張スロット、0=基本スロット       d6:−       d5:−       d4:−       d3:E 拡張スロット D1       d2:E 拡張スロット D0       d1:P 基本スロット D1       d0:P 基本スロット D0     E=書き込むデータ 出力:なし 変化:AF,BC,D   00018H:OUTDO  現在使用中のデバイスへデータをおくります。   入力:A    PRTFLG(0F416H)=000H以外ならプリンタ出力    PTRFIL(0F864H)=000H以外ならPTRFILで指定するファイルへ出力 出力:なし 変化:なし   0001CH:CALSLT  インタースロットコール  IY上位の値によりメモリスロットを選び、メモリ上のプログラムをコールします。   入力:IYの上位=スロットデータ          d7:F 1=拡張スロット、0=基本スロット          d6:−          d5:−          d4:−          d3:E 拡張スロット D1          d2:E 拡張スロット D0          d1:P 基本スロット D1          d0: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=スロットデータ       d7:F 1=拡張スロット、0=基本スロット       d6:−       d5:−       d4:−       d3:E 拡張スロット D1       d2:E 拡張スロット D0       d1:P 基本スロット D1       d0:P 基本スロット D0 出力:なし 変化:すべて   00028H:GETYPR  FACのタイプを返します。 入力:FAC 出力:  Sf=1 整数型      Zf=1 文字列型    P/Vf=0 単精度      Cf=0 倍精度 変化:AF     0002BH:IDバイト0        d7:割り込み周期 1=1/50秒、0=1/60秒        d6:Y2     Y=000:年−月−日        d5:Y1     Y=001:月−日−年        d4:Y0     Y=002:日−月−年        d3:C3     C=0000 日本キャラクタ        d2:C2     C=0001 インターナショナル        d1:C1        d0:C0   0002CH:IDバイト1        d7:BV3    BV=000 日本版BASIC        d6:BV2    BV=001 インターナショナル BASIC        d5:BV1        d4:BV0        d3:K3     K=0000 日本のキーボード        d2:K2     K=0001 インターナショナルのキーボード        d1:K1     K=0002 フランスのキーボード        d0:K0     K=0003 イギリスのキーボード                    K=0004 ドイツのキーボード   00030H:CALLF スロットを切り替えてプログラムコールします。 第1バイトはRST 008Hの後すぐにくるデータです。   入力:第1バイト=コールするスロットデータ          d7:F 1=拡張スロット、0=基本スロット          d6:−          d5:−          d4:−          d3:E 拡張スロット D1          d2:E 拡張スロット D0          d1:P 基本スロット D1          d0: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(0F3EAH)=バックグラウンドカラー    BDRCLR(0F3EBH)=ボーダーカラー 出力:なし 変化:すべて   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=コールするアドレス 出力:ルーチンによる 変化:ルーチンによる   −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− CP/M システム・コール一覧表   0(000H) システム・リセット  ・システムがリセットされる(BOOTと同じ)   入力:なし   出力:なし     1(001H) CON:(コンソール) からの入力   入力:なし   出力:A=アスキー     2(002H) CON:(コンソール)への出力   入力:E=アスキー   出力:なし     3(003H) RDR:(リーダ)からの入力   入力:なし   出力:A=アスキー     4(004H) PUN:(パンチ)への出力   入力:E=アスキー   出力:なし     5(005H) LST:(リスト)への出力   入力:E=アスキー   出力:なし     6(006H) ダイレクト・コンソール入出力   入力:コンソール入力 E=0FFH      コンソール出力 E=アスキー(無い場合 000H)   出力:コンソール入力 A=アスキー      コンソール出力 なし     7(007H) I/Oバイト取り出し   入力:なし   出力:A=I/O バイト   8(008H) I/Oバイト・セット   入力:E=I/O バイト   出力:なし     9(009H) 文字列プリント   入力:DE=文字列アドレス(エンドマーク'$')   出力:なし     10(00AH) コンソール・バッファ読み込み   入力:DE=バッファ・アドレス   出力:バッファ=入力文字数、入力文字     11(00BH) CON:(コンソール)入力ステータス   入力:なし   出力:A=0FFH 入力あり        000H 入力なし     12(00CH) バージョンNoの取り出し   入力:なし   出力:H=001H=MP/M        000H=CP/M      L=バージョンNo 13(00DH) ディスク・システム・リセット  ・システムの再読み込みなしでディスク交換時に使用   入力:なし   出力:なし     14(00EH) ディスク・ドライブ選択  ・カレント・ディスク変更   入力:E=ドライブNo.   出力:なし 15(00FH) ファイル・オープン   入力:DE=FCBアドレス   出力:A=ディレクトリコード(0FFH ファイル未定義)     16(010H) ファイル・クローズ   入力:DE=FCBアドレス   出力:A=ディレクトリコード(0FFH ファイル未定義)     17(011H) 最初のファイル名サーチ   入力:DE=FCBアドレス   出力:A=ディレクトリコード(0FFH ファイル未定義) 18(012H) 次のファイル名サーチ   入力:なし   出力:A=ディレクトリコード(0FFH ファイル未定義) 19(013H) ファイル削除   入力:DE=FCBアドレス   出力:A=ディレクトリコード(0FFH ファイル未定義)     20(014H) シーケンシャル・リード   入力:DE=FCBアドレス   出力:A=エラーコード(000H エラーなし)              (0FFH エンド・オブファイル)     21(015H) シーケンシャル・ライト   入力:DE=FCBアドレス   出力:A=エラーコード(000H エラーなし)              (0FFH ディスク・フル) 22(016H) ファイル作成   入力:DE=FCBアドレス   出力:A=ディレクトリ・コード(0FFH ディレクトリ・フル)     23(017H) ファイル名変更   入力:DE=FCBアドレス   出力:A=ディレクトリ・コード(0FFH ファイル未定義)     24(018H) ログイン・ベクトル取り出し  ・ディスク・ドライブの状況   入力:なし   出力:HL=ログイン・ベクトル     25(019H) カレント・ディスクNo.の取り出し   入力:なし   出力:A=カレント・ディスクNo.     26(01AH) DMAアドレスセット   入力:DE=DMAアドレス   出力:なし     27(01BH) アロケーション・アドレスの取り出し  ・システム変更   入力:なし   出力:HL=アロケーション・ベクトル・アドレス     28(01CH) ライト・プロテクト  ・カレンント・ディスクを読み込み専用にする   入力:なし     29(01DH) R/Oベクトルの取り出し  ・読み出し専用になっているディスク・ドライブの情報   入力:なし   出力:HL=ベクトル 30(01EH) ファイル・アトリビュートのセット   入力:DE=FCBアドレス   出力:A=ディレクトリ・コード(0FFH ファイルがない)     31(01FH)ディスク・パラメータ・アドレス取り出し   入力:なし   出力:HL=ディスク・パラメタ・アドレス     32(020H)ユーザー・コードのセット/取り出し   入力:セット  E=ユーザー・コード      取り出し:E=0FFH   出力:セット  なし      取り出し:A=ユーザー・コード     33(021H)ランダム・リード   入力:DE=FCBアドレス   出力:A=エラーコード(000H 正常)     34(022H)ランダム・ライト   入力:DE=FCBアドレス   出力:A=エラーコード(000H 正常)     35(023H)ファイル・サイズ計算   入力:DE=FCBアドレス   出力:FCB r0〜r2=ファイル・サイズ(ファイルレコード数+1)     36(024H)ランダム・レコード゙のセット   入力:DE=FCBアドレス   出力:FCB r0〜r2=ランダム・レコードNo   出力:A=なし     37(025H)ディスク・ドライブのリセット   入力:DE=ドライブ・ベクトル     38(026H)  未使用     39(027H)  未使用     40(028H)ゼロ・フィルを伴うランダム・ライト   入力:DE=FCBアドレス   出力:A=エラーコード(000H 正常)       FCB  dev: 1バイト ディスク・ドライブ・コード           0  =カレント・ディスク           1〜16=ドライブA〜P  fn : 8バイト ファイルネーム  ft : 3バイト エクステンション(拡張子)  ex : 1バイト ファイルの論理的領域の位置(ロジカル・エクステント)  s  : 2バイト システム用  rc : 1バイト exで示された論理的領域のレコード数  dm :16バイト ディスク位置(1Kバイト単位)  cr : 1バイト シーケンシャルファイル 次のレコード番号  rn : 3バイト ランダムファイルレコード番号(r0〜r2)    *ex, s,rc,crが通常初期値としてそれぞれ000Hにする必要があります    
Home へ戻る