チェックサム付きのダンプリストが掲載されています。($0600-$0FFF)
GAME-III をベーマス用に移植したもので、テキスト・エディタ, シェルとして利用しています。
「MUSIC文や INKEYはありません」
TL/1での利用を想定している様です。
エディタからコンパイル, 実行が可能です。
チェックサム付きのダンプリストが掲載されています。($1000-$2177)
原作との差異は少ないので、原作のソースを打ち込むのが良いと思います。
| 16K System | |
| $0000 | |
|---|---|
| $0080 | |
| ワークレジスタ | |
| $00B5 | |
| $0100 | |
| (VRAM) | |
| $0400 | |
| (エディタなど) | |
| $1000 | |
| コンパイラ本体 | |
| $1A35 | |
| コンパイラワーク | |
| $2000 | |
| ランタイムルーチン等 | |
| $216F | OBJBEG: |
| オブジェクトプログラム → | |
| $3000 | |
| ソースプログラム → | SRCB: |
| (オブジェクトプログラム) | |
| ← 実行時マシンスタック | |
| $3FFF | STACK: |
末尾のアドレスは $2004,5 に入っている値-1
$2000~セーブすればコンパイラなしで実行可能
$2000
初期化後に JMP OBJBEG($216F)
| 32 System | ||
| $0000 | ||
|---|---|---|
| $0080 | ||
| ワークレジスタ | ||
| $00B5 | ||
| $0100 | ||
| (VRAM) | ||
| $0400 | ||
| (エディタなど) | ||
| $1000 | ||
| コンパイラ本体 | ||
| $1A35 | ||
| コンパイラワーク | ||
| $2000 | ||
| ランタイムルーチン等 | ||
| $216F | OBJBEG: | |
| オブジェクトプログラム → | ||
| $3000 | PRGBEG: (GAME-1) | |
| ← 実行時マシンスタック | STACK: | |
| $4000 | ||
| ソースプログラム → | SRCB: | |
| RAMEND: (GAME-1) | ||
| $7F00 | ||
| $7FFF |
MB-6880L2用 (MONITOR V1.1 / L2 BASIC V1.0)
ダンプリストを入力します。
| 0F20:47 | → | $53 | 動作安定化 (BMUG:1982.5p4) TEW |
| 0618:30 | → | $40 | 32K用変更点 |
一部のモニタ・サブルーチンが 1.1/1.2 共通のフックを経由していません。
このパッチでモニタのバージョンに依存しなくなります。
| 0EB6:F674 | → | $FFE9 | NMICLR |
| 0EBC:F20B | → | $FFF2 | MSOUT |
| 0EC2:F20B | → | $FFF2 | MSOUT |
| 0ECE:F20B | → | $FFF2 | MSOUT |
| 0F59:F67F | → | $FFE6 | NMISET |
| 0EBF:BBCF | → | $BC7C | SIZE |
オリジナルのアセンブルソースにパッチを当てる形でソースを再構築してみましたが、変更個所が虫食い状態で再利用に向いていないと感じたので詳細は割愛します。
SCREEN EDITOR V2.0 (BMUG:1983.1)
問題なく入力できて動いた コマンドは入力方法の項に書く
プロンプトの問題
明記は無いのですが、掲載ダンプは MB-6880L2(16K)用だと思います。
ダンプリストでは実行時スタック(原作ソースの STACK:$2FFF) が $3FFF になっています。($2001:3F)
原作とメモリマップが変わるため、コンパイル時やオブジェクトを実行した際にソースを壊す可能性があります。 32K用の変更をした際はこの問題は生じません。
32K用のバイナリを掲載してしまったのかな?とも思いましたが、16Kだと狭いので割り切ってこの配置にした可能性もあります。
原作でゼロページに配置されたシステム領域を $0080~ に変更した際の修正漏れです。
| 1618:16 | → | $86 | TM2 (SYSTEM VAR MHIGH & MOD) |
| 1A1E:16 | → | $86 | WTABLE |
原作でゼロページに配置されたシステム領域を $0080~ に変更した際の修正漏れです。
| 161C:17 | → | $87 | TM2 (SYSTEM VAR MHIGH & MOD) |
| 216F:17 | → | $87 | WTABLE |
オブジェクト/ソース領域のバランスを変えたい場合に変更します。 エディタ側と一致させる必要があります。
| 1028:3000 | → | $4000 | SRCB : ソース領域先頭 |
| 2148:2153 | → | $2151 | INEEE |
| 2151:0000 | → | $865F | LDAA #'_' |
詳細はH68版のメモリーマップを参照してください。
| 1152:E0 | → | $C0 | 拡張なし → あり |
| 1644:E0 | → | $C0 | 拡張なし → あり |
| 216F~ | ユーザーライブラリ 追加 | ||
| 1032:216F | → | OBJBEG | └→ OBJBEG 再設定 |
| 1A35~ | ユーザーライブラリ 予約語表追加 | ||
| 102D:1A35 | → | WTBLE | └→ WTBLE 再設定 |
| 1780~ | ライブラリ アドレス表追加 |
| * | ||||
| * OPTION FOR GAME USERS | ||||
| * | ||||
| ASCIN | EQU | $0028 | MONITOR 1.1/1.2 | |
| ASCOUT | EQU | $002B | MONITOR 1.1/1.2 | |
| * | ||||
| 2147 | ORG | INAT | *** INPUT ROUTINE ADDRESS *** | |
| 2147:2151 | FDB | INEEE | #0 : keyboard | |
| 2149:0000 | FDB | $0000 | #1 : リザーブ | |
| 214B:0000 | FDB | $0000 | #2 : リザーブ | |
| 214D:1B0F | FDB | $1B0F | #3 : 不明 (H68版と同じ) | |
| 214F:0000 | FDB | $0000 | #4 : リザーブ | |
if USE_PROMPT_PATCH | ||||
| * | 変更例 (A:アンダーライン・カーソル) | |||
| 2151:865F | INEEE | LDAA | #'_' | #5-9 のテーブルを潰して実装している |
| 2153:BD0028 | JSR | ASCIN | ||
else | ||||
| * | オリジナル (A:不定) | |||
| 2151:0000 | FDB | $0000 | #5 : リザーブ | |
| 2153:BD0028 | INEEE | JSR | ASCIN | #6-9 のテーブルを潰して実装している |
endif | ||||
| 2156:BD002B | JSR | ASCOUT | ||
| 2159:0F | SEI | |||
| 215A:39 | RTS | |||
| * | ||||
| 215B | ORG | OUTAT | *** OUTPUT ROUTINE ADDRESS *** | |
| 215B:2169 | FDB | OUTEEE | #0 : keyboard | |
| 215D:0000 | FDB | $0000 | #1 : リザーブ | |
| 215F:0000 | FDB | $0000 | #2 : リザーブ | |
| 2161:0000 | FDB | $0000 | #3 : リザーブ | |
| 2163:0000 | FDB | $0000 | #4 : リザーブ | |
| 2165:0000 | FDB | $0000 | #5 : リザーブ | |
| 2167:0000 | FDB | $0000 | #6 : リザーブ | |
| 2169:BD002B | OUTEEE | JSR | ASCOUT | #7-9 のテーブルを潰して実装している |
| 216C:0F | SEI | |||
| 216D:39 | RTS | |||
| 216E:00 | FCB | 0 | ||
| *************************** | ||||
| 216F | END | |||
| FALSE | EQU | 0 | ||
| TRUE | EQU | !FALSE | ||
| USE_PROMPT_PATCH | EQU | FALSE | option.TL1-BM | |
| * ----------------------------------- | ||||
| * TL/1-BM | ||||
| * ----------------------------------- | ||||
| _SYS | EQU | $80 | system | |
| _LF | EQU | $05 | main, readsrc, runtime | |
| NSTACK | EQU | $1F0E | main | |
| SRCB | EQU | $3000 | main (ソース領域先頭→エディタ側設定) | |
| * | ||||
| INCLUDE "system.asm" | ||||
| INCLUDE "main.asm" | ||||
| INCLUDE "userlib.asm" | ||||
| INCLUDE "codegen.asm" | ||||
| INCLUDE "readsrc.asm" | 行番号(2byte/数値) あり | |||
| INCLUDE "table.asm" | ||||
| INCLUDE "usertbl.asm" | 拡張なしの場合 | |||
| ;INCLUDE "usertbl.BMUG2.asm" | CALL等追加 (BMUG:1982.2) 杉本洋之 | |||
| * ----------------------------------- | ||||
| * SUPPORTING ROUTINES & I/O CONTROL | ||||
| * ----------------------------------- | ||||
| _MONIT | EQU | $0A03 | runtime (エラー後の復帰先 : GAME-1) | |
| RUB | EQU | $7F | ||
| STACK | EQU | SRCB-1 | 安全側 ($2FFF→掲載ダンプのメモリマップ) | |
| * | ||||
| INCLUDE "runtime.asm" | ||||
| INCLUDE "option.TL1-BM.asm" | ||||
| ;INCLUDE "userlib.BMUG2.asm" | 必要に応じて includeする | |||
| * ----------------------------------- | ||||
| * OBJECT PG AREA | ||||
| * ----------------------------------- | ||||
| INCLUDE "object.asm" | ||||
| FALSE | EQU | 0 | ||
| TRUE | EQU | !FALSE | ||
| USE_PROMPT_PATCH | EQU | FALSE | option.TL1-BM | |
| * ----------------------------------- | ||||
| * TL/1-BM | ||||
| * ----------------------------------- | ||||
| _SYS | EQU | $80 | system | |
| _LF | EQU | $05 | main, readsrc, runtime | |
| NSTACK | EQU | $1F0E | main | |
| SRCB | EQU | $4000 | main (ソース領域先頭←エディタ側設定) | |
| * | ||||
| INCLUDE "system.asm" | ||||
| INCLUDE "main.asm" | ||||
| INCLUDE "codegen.asm" | ||||
| INCLUDE "readsrc.EDIT2.asm" | 行番号なし | |||
| INCLUDE "table.asm" | ||||
| INCLUDE "usertbl.asm" | 拡張なしの場合 | |||
| ;INCLUDE "usertbl.BMUG2.asm" | CALL等追加 (BMUG:1982.2) 杉本洋之 | |||
| * ----------------------------------- | ||||
| * SUPPORTING ROUTINES & I/O CONTROL | ||||
| * ----------------------------------- | ||||
| _MONIT | EQU | $0A89 | runtime (エラー後の復帰先 : エディタ) | |
| RUB | EQU | $7F | ||
| STACK | EQU | SRCB-1 | エディタ側からのソース領域変更は反映されない | |
| * | ||||
| INCLUDE "runtime.asm" | ||||
| INCLUDE "option.TL1-BM.asm" | ||||
| ;INCLUDE "userlib.BMUG2.asm" | 必要に応じて includeする | |||
| * ----------------------------------- | ||||
| * OBJECT PG AREA | ||||
| * ----------------------------------- | ||||
| INCLUDE "object.asm" | ||||
TL/1 改良版 (BMUG:1983.9) 森茂樹
表題では「改良版」とされていますが、G-VRAMを避けるためメモリマップが異なる点以外の変更はありません。
記事中では「TL/1GR」と表記されていましたが、ここでは「TL/1-BM:GR」と呼ばせていただきます。
グラフィック関連の関数は TL/1 で記述されています。
TL/1-BM のソース格納アドレスは、エディタ側の設定が反映されます。
他のエディタを使用する場合は $1027 の値(SRCB+2)を変更する必要があります。
拡張機能は使用されていませんでした。
PLOT の競合について要確認
CALL, CURSOR, TAB, PLOT(セミグラ)
OBJBEG:$216F → $2281
サークルとカラー命令を追加
TL/1 の拡張が必要になります。(CALL)
| TL/1-BM:GR | |
| $0000 | |
|---|---|
| $0080 | |
| ワークレジスタ | |
| $00B5 | |
| $0100 | |
| (VRAM) | |
| $0400 | |
| (エディタなど) | |
| $1000 | |
| コンパイラ本体 | |
| $1A35 | |
| コンパイラワーク | |
| $2000 | |
| ランタイムルーチン等 | |
| $216F | |
| TL/1 追加機能 (BMUG:1982.2) | |
| $2281 | |
| ( 予約 ) | |
| $2700 | |
| ( G-VRAM ) | |
| $3F00 | |
| ← 実行時マシンスタック | |
| STACK: | |
| $5000 | |
| オブジェクトプログラム → | OBJBEG: |
| $**** | |
| 1032:2281 | → | $5000 | OBJBEG |
| 2001:3FFF | → | $4FFF | STACK |
| 1027:3002 | → | $**** | SRCB+2 (SCREEN EDITOR V2.0 連動) |
| FALSE | EQU | 0 | ||
| TRUE | EQU | !FALSE | ||
| USE_PROMPT_PATCH | EQU | FALSE | option.TL1-BM | |
| * ----------------------------------- | ||||
| * TL/1-BM | ||||
| * ----------------------------------- | ||||
| _SYS | EQU | $80 | system | |
| _LF | EQU | $05 | main, readsrc, runtime | |
| NSTACK | EQU | $1F0E | main | |
| SRCB | EQU | $8000 | main (ソース領域先頭←エディタ側設定) | |
| * | ||||
| INCLUDE "system.asm" | ||||
| INCLUDE "main.asm" | ||||
| INCLUDE "codegen.asm" | ||||
| INCLUDE "readsrc.EDIT2.asm" | 行番号なし | |||
| INCLUDE "table.asm" | ||||
| INCLUDE "usertbl.BMUG2.asm" | CALL等追加 (BMUG:1982.2) 杉本洋之 | |||
| * ----------------------------------- | ||||
| * SUPPORTING ROUTINES & I/O CONTROL | ||||
| * ----------------------------------- | ||||
| _MONIT | EQU | $0A89 | runtime (エラー後の復帰先 : エディタ) | |
| RUB | EQU | $7F | ||
| STACK | EQU | 4FFF | エディタ側からのソース領域変更は反映されない | |
| * | ||||
| INCLUDE "runtime.asm" | ||||
| INCLUDE "option.TL1-BM.asm" | ||||
| INCLUDE "userlib.BMUG2.asm" | CALL等追加 (BMUG:1982.2) 杉本洋之 | |||
| * ----------------------------------- | ||||
| * OBJECT PG AREA | ||||
| * ----------------------------------- | ||||
| ORG | $5000 | 追加 | ||
| INCLUDE "object.asm" | ||||
GAME-1 のスクリーンエディタを使う場合は行番号が必要になります。
・GAME-1 起動は、モニタから G 0600 (1982.2p5) ・CMT (1982.2p14) デジタルカセットの人は >=$E00 で LOAD SAVE可能 ★TL/1BM(ソース) のLOAD-SAVEの仕方 (1982.2p14) TEW SOFT TOP ADD ??==⏎ END ADD ??=&⏎ SAVE >=$FFE3 >=$F682 >=$F01B⏎ II >=$F4CF >=$F682 >=$F01B⏎ L2 ※6885でも動いた??? LOAD >=$F682 >=$F018⏎ └→LOAD後 =$****(TOP ADD)⏎ ==⏎ ・動作確認 (2025.10.25) モニタの L,Pコマンドを呼び出しているようだ Pコマンド FROM,TO の確定は space なので間違えないように SAVE : 6885ではどっちでも動いた件 (調査中) モニタサブルーチン解説 (1982p1) 瑞慶覧辰 $F4CF : FROM-TO エントリ (L2) $FFE3 : FROM-TO エントリ (II) $FFE3 の値 6880L2 : 00 0000 6881 : 7E F4D6 6885 : 7E F4D6 ★ソースのプリンタ出力 (1982.3p1) A=$2C A(0)=$E115 >=$E000⏎ 0⏎ ・TIPs (1982.3p2) >=$F86,X,Y でカーソルが動く $F60 が MUSICらしい ★コンパイル,実行方法 (1982.3p2) エディタ起動 G 0600 コンパイル >=$1000⏎ オブジェクト実行 >=$2000⏎ オブジェクトの範囲 $2000-$4000 ・その他 GAME-PC の記事などから GAMEインタブリタ実行 #=1 ソースのクリア &=0
アドレスを省略した場合は $4000~ コンパイル時、ソースの先頭アドレスはエディタ側で設定した値になる 実行時スタック(STACK)は連動しないのでソースを壊さないように注意 ダンプリストのままだとオブジェクト生成でもソースを壊す可能性があるので、こまめにセーブする事 E : エディタへ C : コンパイル (CALL $1000) G : 実行 (CALL $2000) エディタのコマンド [カナ記号]+[ ] ] コマンドモードへ T : B : F : S : L : V : E : テキストエディタを抜ける
「GAME-1」,「SCREEN EDITOR V2.0」どちらのエディタでも自動タイプ機能が使えます。 自動タイプを使う場合は改行コードを気にする必要はありません。
オブジェクトの配置は固定 (冒頭にライブラリが付く)