最終更新:ID:4mHyealEgA 2017年02月06日(月) 20:51:02履歴
メモリ空間 | 1 |
---|---|
ルーチン番号 | 2 |
1文字のキー入力を待ち、入力された時点でそのキーの文字コードをAccAに格納します。
本ルーチンの出力情報の文字コードがMSKDCの第1バイト($81〜$9F、$E0〜$FD)の場合、漢字コード(2バイト)の入力が行われたことを示します。
この場合、再度本ルーチン呼ぶと、MSKDCの第2バイトを返します。
なお、半角の$81〜$9F、$E0〜$FDのコードは、入力してもBEEP音を出力し、入力は行われません。
本ルーチンの出力情報の文字コードがMSKDCの第1バイト($81〜$9F、$E0〜$FD)の場合、漢字コード(2バイト)の入力が行われたことを示します。
この場合、再度本ルーチン呼ぶと、MSKDCの第2バイトを返します。
なお、半角の$81〜$9F、$E0〜$FDのコードは、入力してもBEEP音を出力し、入力は行われません。
キーボードの入力待ちをし、キー入力された時点でそのコードがMSKDCの第1バイトかをチェックします。
MSKDCの第1バイトならば漢字コードの入力なので、再びKKBDINをコールし、MSKDCの第2バイトを入力し、AccA=MSKDC第1バイト、AccB=MSKDC第2バイトを返します。
最初の入力がMSKDCの第1バイトでない場合は、AccA=0、AccB=入力コードを返します。
MSKDCの第1バイトならば漢字コードの入力なので、再びKKBDINをコールし、MSKDCの第2バイトを入力し、AccA=MSKDC第1バイト、AccB=MSKDC第2バイトを返します。
最初の入力がMSKDCの第1バイトでない場合は、AccA=0、AccB=入力コードを返します。
0 0000 ORG $0000 1 0000 KKBDIN EQU * --- SAMPLE OF "KKBDIN" ROUTINE --- 2 * EQU TABLE 3 0081 MSKLS EQU $81 4 00A0 MSKLE EQU $A0 5 00E0 MSKHS EQU $E0 6 00FD MSKHE EQU $FD 7 0000 ZERO EQU $00 8 0000 103F SWI2 CALL "KKBDIN" ROUTINE 9 0002 41 FCB $41 MAP No.=1 ROUTINE No.=2 10 0003 02 FCB $02 11 0004 81 81 CMPA #MSKLS COMPARE INPUT CODE WITH MSKDC CODE 12 0006 25 17 BCS ASCII IF 81H <= INPUT CODE < A0H OR 13 0008 81 A0 CMPA #MSKLE E0H <= INPUT CODE < FCH 14 000A 25 08 BCS KANJI THEN INPUT CODE IS FIRST CODE 15 000C 81 E0 CMPA #MSKHS ELSE INPUT CODE IS ASCII CODE 16 000E 25 0F BCS ASCII 17 0010 81 FD CMPA #MSKHE 18 0012 24 0B BHS ASCII 19 0014 KANJI EQU * 20 0014 34 02 PSHS A 21 0016 103F SWI2 CALL "KKBDIN" ROUTINE FOR SECOND CODE 22 0018 41 FCB $41 MAP No.=1 ROUTINE No.=2 23 0019 02 FCB $02 24 001A 1F 89 TFR A,B SET ACCA=FIRST BYTE OF KANJI CODE 25 001C 35 02 PULS A SET ACCB=SECOND BYTE OF KANJI CODE 26 001E KBDEND EQU * 27 001E 3F SWI 28 001F ASCII EQU * 29 001F 1F 89 TFR A,B SET ACCA=0, ACCB=ASCII CODE 30 0021 86 00 LDA #ZERO 31 0023 20 F9 BRA KBDEND 32 END
コメントをかく