キャラクターコードについて
文字にはそれぞれ数値が割り当てられていて、その数値をキャラクターコードという。
MSXではCHR$関数にキャラクターコードを入れると、それに対応する文字が返ってくる。
MSXのキャラクターコードはアスキーコードに準拠しているらしく、
00H~1FH、7FHはキャラクターコードの中でも制御コードという、文字以外の機能が割り当てられている。
制御コードはPRINT文で出力するとその機能が働くので、一般的には使いにくい(と思っている)。
例えば、PRINT CHR$(&H7)と入力すると、BEEP音が鳴るはずだ。
キャラクターコード出力してみる
ということで、制御コード以外のSCREEN1の全文字を画面に出力してみよう。
キャラクターコード20HからFFH(7FHを除く)を16文字ずつ出力するプログラムだ。
キャラクターコード出力
1000 SCREEN 1 : WIDTH 32 : CLS
1010 PRINT " 0123456789ABCDEF"+CHR$(&HA)+CHR$(&HD)
1030 FOR I=&H2 TO &HF
1040 PRINT HEX$(I)
1050 NEXT
1100 FOR I=&H20 TO &HFF STEP &H10
1110 LOCATE 2,I \ &H10
1120 FOR J=0 TO &HF
1130 IF I+J=&H7F THEN GOTO 1150
1140 PRINT CHR$(I+J);
1150 NEXT
1160 PRINT
1170 NEXT
実行結果
例えば「A」なら左の数値が4、上の数値が1なので、キャラクターコードは「41H」ということになる。
為になったね。
1010行のCHR$(&HA)+CHR$(&HD)で、カーソルの復帰(Carriage Retrun)と改行(Line Feed)を制御コードで実行しているよ。
制御コード表
ちなみに、制御コードには次のようなものがある。
コード | 文字 | 意味 | コード | 文字 | 意味 |
---|---|---|---|---|---|
00H | NUL | Null文字 | 10H | DLE | Data Link Escape |
01H | SOH | Start of Heading | 11H | DC1 | Device Control 1 |
02H | STX | Start of Text | 12H | DC2 | Device Control 2 |
03H | ETX | End of Text | 13H | DC3 | Device Control 3 |
04H | EOT | End of Transmission | 14H | DC4 | Device Control 4 |
05H | ENQ | Enquiry | 15H | NAK | Negative Acknowledge |
06H | ACK | Acknowledge | 16H | SYN | Synchronous Idle |
07H | BEL | Bell | 17H | ETB | End of Transmission Block |
08H | BS | Back Space | 18H | CAN | Cancel |
09H | HT | Horizontal Tab | 19H | EM | End of Medium |
0AH | LF | Line Feed | 1AH | SUB | Substitute |
0BH | VT | Vertical Tab | 1BH | ESC | Escape |
0CH | FF | Form Feed | 1CH | FS | File Separator |
0DH | CR | Carriage Return | 1DH | GS | Group Separator |
0EH | SO | Shift Out | 1EH | RS | Record Separator |
0FH | SI | Shift In | 1FH | US | Unit Separator |
7FH | DEL | Delete |
じゃまた。