2020.9.9
前へ
次へ
ホームページトップへ戻る

[新連載]復活!TINY BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
すべてはここからはじまりました。
中日電工も。
40年前を振り返りつつ新連載です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第85回]


●OUTC、CHKIO

OUTCは文字コードを出力装置に送る最下層のサブルーチンです。
CHKIOは入力装置から文字コードを入力する同じく最下層のサブルーチンです。
いずれもハードウェアと直接結びついていますから、オリジナルのTINY BASICのプログラムのその部分をそのまま解読しても、現在のWindows環境ではそれを直接利用することはできません。
当然現在の環境に合わせてプログラムを書き換える必要があります。
ということで今まで説明をしないままにしてきました。
しかし当連載も80回を越えてようやく終わりに近付きましたので、この辺りで簡単に説明をしておくことにしました。



OUTCでは出力コントロールスイッチとして’OCSW’が使われています。
OCSW=0のときは出力は行なわれません。
しかしこの機能は「中日電工版」TINY BASICでは意味のないものなので、OCSWに関係する部分はプログラムから削除するつもりです。
OUTCをCALLするとAレジスタの値が出力装置に送られます。
そのコードがCR(0D)、LF(0A)のときも送出されます。
フラグは変化しますが各レジスタの値は変わりません。

CHKIOは入力を確認します。
入力がない場合にはZフラグを立ててリターンします。
入力があった場合にはZフラグがクリアされ、入力された値がAレジスタにセットされます。
入力した値が[Ctrl][O]だった場合にはOCSWの値を反転させます(しかしこの機能は「中日電工版」TINY BASICでは使わないため、その部分のプログラムは削除します)。
入力した値が[Ctrl][C]のときはTINY BASICの実行はそこで打ち切られ、RSTARTにジャンプします。
[Ctrl][C]入力はオリジナルのTINY BASICの機能です。
[Ctrl][C]入力は「中日電工版」TINY BASICでは使えません(USB接続が打ち切られます)。
代わるものを検討中です。

下はOUTCとCHKIOのプログラムリストです。



OUTCのエントリアドレスは0010です。
オリジナルのTINY BASICではRST 2としてCALLしています。
RST 2は[第11回]で説明しました。
RST 2からOC2:にジャンプしてきます。
しかし066C〜9670はOCSWのチェック部分ですからここは外します。
結局OUTCはOC3:からということになります。
OC3:IN 0FBH
    ANI 1H
    JZ OC3
は送信ノットレディのチェックですがここは当然変更することになります。
その次の
POP PSW
OUT 0FAH
がデータOUTですがここも変更になります。
そのあとの
CPI CR
RNZ
MVI A,LF
RST 2
MVI A,CR
RET
はCR(0D)だったときには0D・0Aとして送出するための部分です。
通常プリンタ出力の場合には0D0Aを送ります。
最後の
MVI A,CR
はAレジスタの値を変更しないで(0Dのまま)リターンするためです。
ひょっとしてOUTCをCALLしたあとでAレジスタの値を必要とするかもしれません。
そのための対策ではないかと思います。

CHKIOは見ての通りほとんどがハードに関わっています。
ここはほとんど変更することになりますから説明は省きます。

復活!TINY BASIC[第85回]
2020.9.9upload

前へ
次へ
ホームページトップへ戻る