日立MB-S1に関する情報

メモリ空間1
ルーチン番号2

機能

1文字のキー入力待ちをします($00〜$FF)。

解説

1文字のキー入力を待ち、入力された時点でそのキーの文字コードをAccAに格納します。
本ルーチンの出力情報の文字コードがMSKDCの第1バイト($81〜$9F、$E0〜$FD)の場合、漢字コード(2バイト)の入力が行われたことを示します。
この場合、再度本ルーチン呼ぶと、MSKDCの第2バイトを返します。
なお、半角の$81〜$9F、$E0〜$FDのコードは、入力してもBEEP音を出力し、入力は行われません。

出力情報

  • AccA:入力された文字コード($00〜$FF)

サンプル・プログラム

内容

キーボードの入力待ちをし、キー入力された時点でそのコードがMSKDCの第1バイトかをチェックします。
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

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

どなたでも編集できます