キーパッドからの文字入力、ディスプレイへの文字出力、数値出力、割り込みハンドラーの登録など、頻繁に使うけど 機械語命令だけだとちょっと複雑で規模が大きくなりがちな機能をソフトウェアで実装して、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で確定します。7に割り当てられているのは記号です。Addr Setキーを押すとピリオド(小数点)が付けられます。Read Decrは1文字消去、入力終了はWrite Incrです。