マイコン独立大作戦
キーボードインターフェースの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
そして作戦その2は、やっぱりキーボードインターフェースしかありませんでしょう。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第9回]
●キーコード対照表の作成(3)
前回は終わりのところで、スキャンコードとASCIIコードとShiftを押したときのASCIIコードを別々のメモリアドレスブロックに分けて書き込んだほうがよいと思います、と書きました。
前回は時間がなくなってしまいましたのでそこで終りましたが、今回はその続きということで、またBASICプログラムを作って、そのようにしてみました。
どうせそのように分けるのでしたら、表の方もひとつの表でShiftなしのときのASCIIコードとShiftを押したときのASCiiコードとスキャンコードが対比できるようにするとよい、と思いましたのでそのようにプログラムしました。
下は作成したBASICプログラムとその実行結果です。
>/save keymake8.txt 10 AD1=$9100,AD2=$9200,AD3=$9300 20 FOR A=0 TO $5E STEP 2 30 AD=$9000+A 40 CAS=PEEK(AD) 50 KC=PEEK(AD+1) 60 POKE AD1,KC:POKE AD2,CAS 70 PRINT CHR$(CAS);" ";HEX$(CAS,2);" "; 80 IF A=$5E THEN CAS=$5F:GOTO 140 90 IF (CAS>=$2C)*(CAS<=$2F)THEN CAS=CAS+$10:GOTO 140 100 IF CAS=$30 THEN PRINT " - ";HEX$(KC,2):CAS=0:GOTO 150 110 IF CAS<=$3B THEN CAS=CAS-$10:GOTO 140 120 IF CAS<=$5E THEN CAS=CAS+$20:GOTO 140 130 IF CAS<=$7A THEN CAS=CAS-$20 140 PRINT CHR$(CAS);" ";HEX$(CAS,2);" ";HEX$(KC,2) 150 POKE AD3,CAS 160 AD1=AD1+1,AD2=AD2+1,AD3=AD3+1 170 NEXT A >r. 1 31 ! 21 16 2 32 " 22 1E 3 33 # 23 26 4 34 $ 24 25 5 35 % 25 2E 6 36 & 26 36 7 37 ' 27 3D 8 38 ( 28 3E 9 39 ) 29 46 0 30 - 45 a 61 A 41 1C b 62 B 42 32 c 63 C 43 21 d 64 D 44 23 e 65 E 45 24 f 66 F 46 2B g 67 G 47 34 h 68 H 48 33 i 69 I 49 43 j 6A J 4A 3B k 6B K 4B 42 l 6C L 4C 4B m 6D M 4D 3A n 6E N 4E 31 o 6F O 4F 44 p 70 P 50 4D q 71 Q 51 15 r 72 R 52 2D s 73 S 53 1B t 74 T 54 2C u 75 U 55 3C v 76 V 56 2A w 77 W 57 1D x 78 X 58 22 y 79 Y 59 35 z 7A Z 5A 1A - 2D = 3D 4E ^ 5E ~ 7E 55 \ 5C | 7C 6A @ 40 ` 60 54 [ 5B { 7B 5B ; 3B + 2B 4C : 3A * 2A 52 ] 5D } 7D 5D , 2C < 3C 41 . 2E > 3E 49 / 2F ? 3F 4A \ 5C _ 5F 51 >p.hex$(ad1),hex$(ad2),hex$(ad3) 9130 9230 9330 >dm 9100,912f 9100 16 1E 26 25 2E 36 3D 3E-46 45 1C 32 21 23 24 2B ..&%.6=>FE.2!#$+ 9110 34 33 43 3B 42 4B 3A 31-44 4D 15 2D 1B 2C 3C 2A 43C;BK:1DM.-.,<* 9120 1D 22 35 1A 4E 55 6A 54-5B 4C 52 5D 41 49 4A 51 ."5.NUjT[LR]AIJQ >dm 9200,922f 9200 31 32 33 34 35 36 37 38-39 30 61 62 63 64 65 66 1234567890abcdef 9210 67 68 69 6A 6B 6C 6D 6E-6F 70 71 72 73 74 75 76 ghijklmnopqrstuv 9220 77 78 79 7A 2D 5E 5C 40-5B 3B 3A 5D 2C 2E 2F 5C wxyz-^\@[;:],./\ >dm 9300,932f 9300 21 22 23 24 25 26 27 28-29 00 41 42 43 44 45 46 !"#$%&'().ABCDEF 9310 47 48 49 4A 4B 4C 4D 4E-4F 50 51 52 53 54 55 56 GHIJKLMNOPQRSTUV 9320 57 58 59 5A 3D 7E 7C 60-7B 2B 2A 7D 3C 3E 3F 5F WXYZ=~|`{+*}<>?_ >/sv keycode5.bin,9100,932f 0230(560)bytes saved |
プログラムを実行したあとで、DMコマンドで9100〜と9200〜と9300〜のメモリの内容を確認してみました。
9100〜がスキャンコードで、9200〜がShiftを押さないときのASCIIコードで、9300〜がShiftを押したときのASCIIコードです。
キーボードインターフェースの製作[第9回]
2016.10.19upload
前へ
次へ
ホームページトップへ戻る