その他


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 へ戻る