キャラクターコードについて

キャラクターコードについて

文字にはそれぞれ数値が割り当てられていて、その数値をキャラクターコードという。
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)を制御コードで実行しているよ。

制御コード表

ちなみに、制御コードには次のようなものがある。

コード文字意味コード文字意味
00HNULNull文字10HDLEData Link Escape
01HSOHStart of Heading11HDC1Device Control 1
02HSTXStart of Text12HDC2Device Control 2
03HETXEnd of Text13HDC3Device Control 3
04HEOTEnd of Transmission14HDC4Device Control 4
05HENQEnquiry15HNAKNegative Acknowledge
06HACKAcknowledge16HSYNSynchronous Idle
07HBELBell17HETBEnd of Transmission Block
08HBSBack Space18HCANCancel
09HHTHorizontal Tab19HEMEnd of Medium
0AHLFLine Feed1AHSUBSubstitute
0BHVTVertical Tab1BHESCEscape
0CHFFForm Feed1CHFSFile Separator
0DHCRCarriage Return1DHGSGroup Separator
0EHSOShift Out1EHRSRecord Separator
0FHSIShift In1FHUSUnit Separator
7FHDELDelete

じゃまた。