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

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



[第99回]


●スクリーンエディタなし版ソースファイルとバイナリファイル

前回は中日電工版TINY BASIC(スクリーンエディタなし版)のBSやブレーク機能について説明をしました。
今回はそのためにそれ以前の暫定版から変更した部分のプログラムについて簡単に説明をします。
説明に入る前にいつものようにソースプログラムファイルとバイナリファイルのリンクを下につけておきます。

エンドコードの問題を回避するためとウイルスチェッカーにダウンロードを拒否されないために拡張子を変更してあります。
ダウンロード後に
tx2→txt
bbb→bin
に変更してお使いください。
詳しくは[第87回]および[第41回][第42回]をご参照ください。
またダウンロード後のアセンブル作業や、ZB3BASICにロードして実行する手順などについては[第33回]を参照願います。

1)「中日電工版」TINY BASIC(スクリーンエディタなし版)の最終版ソースプログラムです。
拡張子を本来のtxtからtx2に変えてあります。
ダウンロード後に拡張子をtxtに変更してください。
テキストファイルですからメモ帳、TeraPadなどのテキストエディタで開けます。
ND80Z3.5などに附属の8080アセンブラASM80.comにかけてバイナリファイルを作ります。

tinybs2e.tx2

2)tinybs2e.txtをASM80.comにかけて作成したバイナリファイルです。
拡張子を本来のbinからbbbに変えてあります。
ダウンロード後に拡張子をbinに変更してください。

tinybs2e.bbb

プログラムの説明です。
暫定版(tinybste.txt)と今回のスクリーンエディタなし最終版(tinybs2e.txt)をWinMergeで比較して異なっている部分について説明をすることにします。

プログラムの最初の部分です。

ここは[第97回]で説明したところと同じです。
そのときは「スクリーンエディタ版」との比較でしたがシステムワークアドレスを拡げていることも同じです。
ただ「スクリーンエディタ版」では入力バッファのサイズを64字から80字に変更しましたが、今回の「スクリーンエディタなし版」ではオリジナルと同じ64字のままです。

次の変更部分です。
ここはブレークチェックのための変更です。

オリジナルではCHKIOはブレークチェックとキー入力を兼用しています。
暫定版ではCHKIOはとりあえずキー入力のみ(ブレークチェックは行なわない)としたため、この部分はコメントにしてあります。
今回はブレークチェックとキー入力を分離してブレークチェックのみのサブルーチンとしてCHKBRKを追加してそれをコールしています。

GETLNはプログラム行入力またはINPUT文での入力のためのサブルーチンです。

暫定版はこの部分はほぼオリジナル版と同じですが、ただブレーク機能とかBSなどの機能は省いてあります。
今回はその部分も機能するようにしたためかなり変更しています。
GL3:がその処理ルーチンです。
GL4:はそれほど意味のある動作とは思えませんので削除しました。

QTSTGは” ”または’ ’で囲んだ文字列を表示するサブルーチンです。

暫定版ではオリジナルにあるQT4をとりあえずそのまま残していましたが、QT4はおそらく現行システムでは使わない特殊機能のためのものと思われますので削除しました。

下はCHKIOの変更部分です。

上でも書きましたようにCHKIOはブレークチェックとキー入力を兼ねています。
暫定版ではアルファベットの小文字を大文字に変換しています。
今回もその部分は暫定版と同じです。
その部分はオリジナルにはありません。
今回のプログラムではCHKIOでブレークチェックも行なっていますが、オリジナルではキー入力がない場合にはメインルーチンに戻るようになっていました。
しかし暫定版も今回のプログラムもWindows側のC++プログラムの仕様で、キー入力があるまで待ち続ける機能になっています。
そのため上に書きましたようにブレークチェックとキー入力を分離しました。
Windows側に1文字のキー入力を要求するプログラムは今回のプログラムにあるように
MVI A,05
CALL SOUT
CALL SIN
です。
[Ctrl]+[B]が入力されるとZフラグが立ちます。
処理できないコードを無視するため、80以上と20より小さいコードを除外しています。
コード08は’BS’ではなくて’←’として機能します。
それを’BS’として機能させるためちょっと面倒なことをやっています。
なおMVI B,E7はZB3BASICシステムでWindows側にコードを送るときの約束事です。

今回追加したブレークチェック部分です。

MVI A,EF
MOV B,A
OUT 98
はCALL SINSを正しく機能させるための約束事です。
SINSをコールすると[Ctrl]+[B]が入力されたときCレジスタに00を入れてリターンします。
キー入力がないときはZフラグが立ちますが、キー入力があってもキーコードを読み取ることはできません。

復活!TINY BASIC[第99回]
2020.9.27upload

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