システムコール

キーパッドからの文字入力、ディスプレイへの文字出力、数値出力、割り込みハンドラーの登録など、頻繁に使うけど 機械語命令だけだとちょっと複雑で規模が大きくなりがちな機能をソフトウェアで実装して、1つの機械語命令で使えるようにしたものを一般に「システムコー ル」と呼びます。DeMでは「SYS」命令+番号2桁で使うことができます。

Operation Mnemonic inCode Opr2 Opr3 Opr4 Opr5 #bytes Opcode Ie Cy Cd
push SR:PC then PC <- (SYS Vector) SYS Vec 2 64 VV

Opcode欄の「VV」にあたるところに00~99の数値を入れてください。ただし、利用できる数値は以下の表に示されるもののみです。

コーディング例(getch・putch)

Addr Data Label Opcode Operand Comment
0000 64 05 start: SYS clear ディスプレイを消去
0002 64 10 loop: SYS getch キーパッドから1文字Aに得る
0004 75 13 CMPI 13 Write Incrが押されたか?
0006 40 04 JFEQ end Yes(A=13)ならendにジャンプ
0008 64 00 SYS putch Aに入っている文字をディスプレイ表示
0010 61 10 JB loop loopにジャンプ
0012 99 end: HALT 停止

キーコードについて

“getch”で扱う「キーコード」はキーパッドの各キーに割り当てられた数値です。このキーコードを”putch”でディスプレイ出力すると文字として表示されます。その関係は下図のとおりです。

キー 0~9 Addr
Set
Func Read
Decr
Read
Incr
Write
Incr
キーコード 48~57 65 66 67 68 13
ディスプレイ出力 “0”~”9″ “A” “B” “C” “D” なし

文字列入力”gets”について

“gets”は文字列入力です。このシステムコールでは数字以外の英字や記号の入力ができます。システムコールを実行して文字列入力待ちになったらFuncを押すと、英字モードになります。もう一度Funcを押すと通常の数字モードになります。

英字モードではキートップの右下の刻印の英字が押せます。同じキーを押すたびに候補の文字が表示されるので、別のキーまたはRead Incrで確定します。に割り当てられているのは記号です。Addr Setキーを押すとピリオド(小数点)が付けられます。Read Decrは1文字消去、入力終了はWrite Incrです。