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

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



[第105回]


●マイコン独立化セット用中日電工版TINY BASIC(スクリーンエディタなし版)プログラムの説明

マイコン独立化セット用TINY BASIC(スクリーンエディタなし版)tinybs4g.txtはUSB接続用TINY BASIC(tinybs2e.txt)をもとにしてその一部を書き換えて作りました。
書き換えた部分をWinMergeで示しながら説明することにします。
WinMergeについては[第97回]で紹介していますので参照願います。

左側がtinybs2e.txt、右側がtinybs4g.txtです。
tinybs2e.txtは[第99回]で説明をしました。

SIN(キーボード入力)とSOUT(画面表示出力)のアドレスを変更しています。
実はアドレス5200番地〜は独立型システムプログラムのスクリーンエディタプログラムのアドレスなのですが、ここではスクリーンエディタの機能は使わずただのキーボード入力の機能として5206を使っています。
5206はキーボードから入力されるまで待っていて何かキーが押されたらその文字コードをAレジスタに入れてリターンするサブルーチンです。
CURRNTHを追加していますがこのアドレスは使っていません。
使うつもりでこのように書いたのですが結局使いませんでした。
うっかりして削除するのを忘れていました。
独立型で必要があって追加したのはAREG=$9EDFです。
ブレークのためのワークです。
このためSTKLMTのアドレスが1バイト後ろにずれました。

システム機能の違いによって[Back Space]入力(コード08)時のエコー出力をするかしないかでCALL OUTCの位置を変更しています。



出力サブルーチン(OC3)とキー入力サブルーチン(CHKIO)のところです。

独立型はBレジスタを書き換えないのでBレジスタを退避する部分を省いています。
独立型のCHKIOはちょっと複雑なプログラムになっています。
[Ctrl]+[B](ブレークコード、02)が入力されたとき、テキストプログラムの実行を中止してTINY BASICのスタートポイントに戻るのですが、独立型ではシステムのキー入力サブルーチン(SIN)は常時[Ctrl]+[B]入力をチェックしていて、入力されるとすぐにAレジスタに02を入れてリターンしてきてしまいます。
そのため[Ctrl]+[B]が押されているとその間繰り返し

OK
が表示されてしまいます(下の画面)。

それを避けるためワークレジスタAREGを使って直前に押されたキーコードが02かそれ以外かをチェックするようにしています。
逆に[Back Space]の処理は独立型では[←]ではなくて文字通り[BS]として働くためその部分はシンプルになっています。

ブレークコード(02)の入力チェックサブルーチンです。

独立型ではキー入力回路に直接アクセスすることでキー入力コードを読み取ることができます。
上で説明した[Ctrl]+[B]の押し下げ検出のためキー入力コードをAREGに保存したうえで、それがブレークコード(02)だったときにはRSTARTにジャンプします。

下はND80Z3.5用独立型TINY BASIC(tinybs4g.txt)とND8080用独立型TINY BASIC(tinybs5a.txt)の比較です。

SINとSOUTのみアドレスが異なっています。
そのほかは同じプログラムです。

復活!TINY BASIC[第105回]
2020.10.6upload

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