楽天市場
[無料でホームページを作成] [通報・削除依頼]

1kワードのTINYBASIC その1

前回はRAM容量1kバイトのPIC16F1705を対象に電大版TINYBASICの移植例を紹介しました。

今回RAM容量が512バイトのPIC16F1704をターゲットに、インタープリタのサイズが
(電大版の半分の)1kワードのTINYBASICインタープリタを作成しましたのでご紹介します。
コマンド表や解説、ダウンロードについては次のページで行います。

TXはRC4、RXはRC5に割付けられています。19200bpsで通信します。
PICにはリセット回路とリセットSWを設けてください。

○PIC16F1704のメモリーマップ (左側:flush領域、右側:RAM領域、362バイトはユーザープログラムとスタックの合計)
img_20180725-150331.jpg

○プログラム実行例1(上段:1kWBASIC,下段:電大版TINYBASIC(参考))
1kWBASICにはFOR-NEXTル-プが無い
img_20180725-150754.jpg
img_20180725-150734.jpg

○RAM領域でのプログラム格納の様子
img_20180725-151005.jpg

○プログラム実行例2(上段:1kWBASIC,下段:電大版TINYBASIC(参考))
 RAMの一部($2190以降)を配列として使用、MINOL-Tiny BASICとは"$"の使い方が異なります。
img_20180725-151223.jpg
img_20180725-151334.jpg

○メモリ使用状況
$2189までユーザープログラム、$2190からの50バイトを配列として使用、仮想スタックは$21EFから$21DDまで使用
img_20180725-151605.jpg

<はじめに>
小さいBASICへの取り組みは古くから行われており、68系では768バイトで記述されたVTLが有名です。
これはTINYBASICのコマンドを記号化してサイズの低減を図った取り組みですが、
コマンドを記号化したために可読性に劣るという欠点を有します。

もうひとつの取り組みは可読性は担保しつつTINYBASICのコマンドをさらに簡素化して、
行番号や変数も1バイトに収めて小さなBASICを作ってしまおうという取り組みです。
古くは1976年発行のDr. Dobb's Journal of Computer Calisthenics and Orthodontiaに寄稿された
8080向けのMINOL-Tiny BASIC with Strings in 1.75K Bytes 作者:Erik T. Mueller.
があり、Emmanuel Rocheさんのソース加筆により、MINOL22.ASMとして公開されています。

最近では8008用に書かれた 8008 1k Tiny BASIC 作者:Paul Robson
があります。こちらも作動しますが、ラインエディタがサポートされていません。

可読性に劣るのはイヤなので、今回はErik T. MuellerさんとPaul Robsonさんのいいとこ取り
をして、低RAM容量(512バイト)のPICに搭載できるBASICインタープリタを作成しました。

(ミッドレンジPICはコマンド長が14ビットなので、PICの1kWは1.75kBytesに相当します。)


参考にしたページ

<MINOL-Tiny BASIC>
http://www.ballyalley.com/newsletters/arcadian/letters/Joe%20White/

http://deramp.com/downloads/mfe_archive/010-S100%20Computers%20and%20Boards/00-MITS/40-Software/VTL-2/Binaries/minol22.txt

<8008 1k Tiny BASIC>
https://hackaday.io/project/18851-8008-1k-tiny-basic

<altairz80エミュレータ(SIMH,CP/M) MINOL-Tiny BASIC の実行環境>
http://www.classiccmp.org/cpmarchives/cpm/mirrors/www.schorn.ch/cpm/intro.php
img_20180727-023432.jpg