u80付属の Palo Alto TINY BASIC

概要

整理済みの「RAM対応版」をアセンブルしています。

関連情報

  • Palo Alto TINY BASIC (DDJ:1976.5p12-25) Li-Chen Wang
  • Errata/additions to Palo Alto Tiny BASIC (DDJ:1976.6-7p35) Lichen Wang
  • Palo Alto Tiny BASIC Version Three (1977)

ハードウェア構成とメモリマップ

u80 には下記三種の構成にあわせたバイナリを添付しています。

どの実装でも TK-80の MONITORルーチンを使用していません。

構成1:TK-80 + TV-CD + KBR-014

  • TV-CD (日本電子販売) [32桁x16行]
  • KBR-014 (NEC)
  • 拡張メモリ

構成2:TK-80 + TVD-02 + KB-02

  • TVD-02 (ADTEK) [32桁x16行]
  • KB-02 (ADTEK)
  • 拡張メモリ

I/O誌, ASCII誌に掲載されたプログラムの実行環境はこの構成が多い様です。

※I/Oルーチンに ADTEK社の「PROM-04」は使用していません

構成3:TK-80 + TVD-02

  • TVD-02 (ADTEK) [32桁x16行]
  • 拡張メモリ

2020年5月頃に Twitter で見かけた セバスちゃんさん(@wildcatF4F_) のキーパッド画像に触発されて作ったものです。

キーパッドだけで操作します。(自動タイプに対応していません)

※I/Oルーチンに ADTEK社の「PROM-04」は使用していません

メモリマップ

offset 2000H
インタプリタ
CRLF 27CDH / 27D0H / 27D4H
構成毎のI/O, 拡張[Ver2_0]
LSTROM 29ABH / 29EBH / 2A8CH
空き (拡張用 予約)
2FFFH
work A000H
ワーク拡張 (11byte)
A00BH
ワーク (21byte)
TXTBGN A020H
TEXT →
ユーザー(12Kbyte)
← ARRAY:@(1~)
TXTEND CF00H (VARBGN)
変数:@(0),A-Z
BUFFER CF37H
ラインバッファ
BUFEND CF7FH
EXTRA BYTES FOR STACK
STKLMT CFA7H
←STACK
STACK-1 CFFFH
  • 空き領域について:

    LSTROM = 最終アドレス + 1 (空き領域を含まない)

  • BASIC TEXT のセーブ範囲:

    BASIC TEXT の格納範囲は TXTBGN ~ TXTEND-1

    TXTBGN の前 2byteに TXTEND が入っているので、TXTBGN-2~ セーブする

    0xA01E ~ ([0xA01E] | ([0xA01F] << 8)) - 1

拡張内容

u80付属の PATBは、これまでの発掘作業で必要となった拡張をしています。

当時の掲載プログラムを変更なしに利用することを意図しているため、複数の構文に対応しています。

実引数はすべて、式に対応しています。

ステートメント:TVRAM方式の表示装置を想定した拡張
M.ODE 0|1 1 のときxy x: 桁 ,y: 行 画面左上が (0,0)
C.LEAR 画面をクリアする 「空白」のディスプレイコードで埋めるカーソルは原点に戻る
E.RASE 画面をクリアする 「空白」のディスプレイコードで埋めるカーソルは原点に戻る
CU.RSOR x,y カーソル位置を指定する
CU.RSOR (x,y) カーソル位置を指定する TVRAM専用の PEEK関数ではない
CU.RS x,y カーソル位置を指定する 短縮形でない CURS に対応
CU.RS (x,y) カーソル位置を指定する TVRAM専用の PEEK関数ではない 短縮形でない CURS に対応
PO.KE x,y,ascii 文字をTVRAMに書き込む ディスプレイコードに変換して書き込むカーソル位置更新あり
PO.KE (x,y)ascii 文字をTVRAMに書き込む 同上 ※括弧の後ろにカンマなし
ステートメント:一般的な拡張
PO.KE address,data データをメモリに書き込む
CA.LL address マシン語ルーチンを呼出す関数ではない
関数:一般的な拡張
P.EEK (address) メモリを読む

調書

ソフトを打ち込んだ際に、使用している 2K-BASICの仕様を記録しておきます。

■u80同梱版 PATB 設定 [Ver2_0]

	TITLE : <タイトル>
	+-----------------------+-----------------------+
	|_______ MODE : 0 ______|_______ MODE : 1 ______|
	|	□CURSOR  x,y		|	□CURSOR  y,x		|
	|	□CURSOR (x,y)		|	□CURSOR (y,x)		|
	|	□POKE    x,y,ascii	|	□POKE    y,x,ascii	|
	|	□POKE   (x,y)ascii	|	□POKE   (y,x)ascii	|
	+-----------------------+-----------------------+
	|	□POKE   addr,data							|
	|	□CALL   addr								|
	|	□CLEAR										|
	|	□ERASE										|
	|	□PEEK(addr)								|
	+-----------------------------------------------+
	| 短縮形:										|
	| ※CURS:短縮形でないCURSは使用していません	|
	| ※CURS:*短縮形でないCURSを使用しています*	|
	+-----------------------------------------------+

プログラムリストの入力から実行まで

添付の PATBには SAVE/LOAD 機能を付けていません。 BASIC の TEXT は テキストファイルのまま保存し、利用の都度自動タイプで入力してください。

構成1:TK-80 + TV-CD + KBR-014

機能 操作 備考
一字削除 後退 直前の一文字を削除します
一行削除 まっ消 行の先頭まで削除します
画面消去 EOT 画面をクリアしカーソルを画面左上に戻します
実行中止 ETX 実行中のプログラムから抜けます

構成2:TK-80 + TVD-02 + KB-02

機能 操作 備考
一字削除 RUB 直前の一文字を削除します
一行削除 BRK 行の先頭まで削除します
画面消去 CTRLP 画面をクリアしカーソルを画面左上に戻します
実行中止 CTRLC 実行中のプログラムから抜けます

構成3:TK-80 + TVD-02

. RET
_ RUN
CAN
DEL LOD
SHIFT
STR
RESET
C
D
E
F
LF ADR
8
9
A
B
BS R.I
4
5
6
7
SP R.D
0
1
2
3
CR W.I

2K-BASIC ではキートップ右下以外の表記で使用します。

[SHIFT]を押した回数で入力内容が変わります。

  • [SHIFT] なし:左下
  • [SHIFT] 1回:左上
  • [SHIFT] 2回:右上

[SHIFT]の状態は 0→1→2→0 と循環します。

[SHIFT]以外の入力で確定し、[SHIFT]は押していない状態に戻ります。

TK-80 の PPI PC1 でクリック音を鳴らしています。 クリック音は [SHIFT]の状態に合わせて音程が変わります。

機能 操作 備考
一字削除 BS 直前の一文字を削除します
一行削除 DEL 行の先頭まで削除します
画面消去 C.CR キーが足りないので ERASEコマンドで代用します
実行中止 CANSHIFTSHIFTDEL 実行中のプログラムから抜けます

u80付属の Palo Alto TINY BASIC