整理済みの「RAM対応版」をアセンブルしています。
u80 には下記三種の構成にあわせたバイナリを添付しています。
どの実装でも TK-80の MONITORルーチンを使用していません。
I/O誌, ASCII誌に掲載されたプログラムの実行環境はこの構成が多い様です。
※I/Oルーチンに ADTEK社の「PROM-04」は使用していません
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 の格納範囲は TXTBGN ~ TXTEND-1
TXTBGN の前 2byteに TXTEND が入っているので、TXTBGN-2~ セーブする
0xA01E ~ ([0xA01E] | ([0xA01F] << 8)) - 1
u80付属の PATBは、これまでの発掘作業で必要となった拡張をしています。
当時の掲載プログラムを変更なしに利用することを意図しているため、複数の構文に対応しています。
実引数はすべて、式に対応しています。
| ステートメント:TVRAM方式の表示装置を想定した拡張 | ||||
|---|---|---|---|---|
| M.ODE | 0|1 | 1 のときx↔y | 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 は テキストファイルのまま保存し、利用の都度自動タイプで入力してください。
| 機能 | 操作 | 備考 |
|---|---|---|
| 一字削除 | 後退 | 直前の一文字を削除します |
| 一行削除 | まっ消 | 行の先頭まで削除します |
| 画面消去 | EOT | 画面をクリアしカーソルを画面左上に戻します |
| 実行中止 | ETX | 実行中のプログラムから抜けます |
| 機能 | 操作 | 備考 |
|---|---|---|
| 一字削除 | RUB | 直前の一文字を削除します |
| 一行削除 | BRK | 行の先頭まで削除します |
| 画面消去 | CTRL+P | 画面をクリアしカーソルを画面左上に戻します |
| 実行中止 | CTRL+C | 実行中のプログラムから抜けます |
|
|
|
|
RESET
| ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
| ||||||||||||||||||||
|
|
|
|
| ||||||||||||||||||||
|
|
|
|
| ||||||||||||||||||||
|
|
|
|
| ||||||||||||||||||||
2K-BASIC ではキートップ右下以外の表記で使用します。
[SHIFT]を押した回数で入力内容が変わります。
[SHIFT]の状態は 0→1→2→0 と循環します。
[SHIFT]以外の入力で確定し、[SHIFT]は押していない状態に戻ります。
TK-80 の PPI PC1 でクリック音を鳴らしています。 クリック音は [SHIFT]の状態に合わせて音程が変わります。
| 機能 | 操作 | 備考 |
|---|---|---|
| 一字削除 | BS | 直前の一文字を削除します |
| 一行削除 | DEL | 行の先頭まで削除します |
| 画面消去 | C.CR | キーが足りないので ERASEコマンドで代用します |
| 実行中止 | CAN:SHIFTSHIFTDEL | 実行中のプログラムから抜けます |