TL/1-BM

概要

TL/1-BM (BMUG:1982.2) 増田俊樹
  • MB-6880 L2用(MONITOR V1.1 / L2 BASIC V1.0)
  • MB-6881/6885 (MONITOR V1.2 / L2 BASIC V1.1) 対応可能
deBUG記事
  • debug (BMUG:1982.6) TEW SOFT
  • TL/1 注意事項 (BMUG:1982.8)

関連情報

  • GAME (ASCII:1978/7p66-??? | 合本:2p166-170) 大西博
  • Tiny Language 1 (1980.1p158-162 TBN | 合本:5p536-537 TBN) 大西博
  • TL/1 追加機能 (BMUG:1982.2) 杉本洋之
  • TL/1 改良版 (BMUG:1983.9) 森茂樹
  • TL/1 によるグラフィック (BMUG:1984.5-6) 松田潤

構成

  • エディタ
    • GAME-1 (TL/1-BM 付属のエディタ)

      チェックサム付きのダンプリストが掲載されています。($0600-$0FFF)

      GAME-III をベーマス用に移植したもので、テキスト・エディタ, シェルとして利用しています。

      「MUSIC文や INKEYはありません」

    • SCREEN EDITOR V2.0 (BMUG:1983.1) 森茂樹

      TL/1での利用を想定している様です。

      エディタからコンパイル, 実行が可能です。

  • TL/1-BM 本体

    チェックサム付きのダンプリストが掲載されています。($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

環境構築:エディタ - GAME-1

MB-6880L2用 (MONITOR V1.1 / L2 BASIC V1.0)

ダンプリストを入力します。

ダンプリストを入力する場合

  • 動作安定化パッチ (BMUG:1982.5p4) TEW
    0F20:47 $53 動作安定化 (BMUG:1982.5p4) TEW

  • 32K用変更点 (BMUG:1982.3p1)
    0618:30 $40 32K用変更点

  • MONITOR V1.2対応 変更点 (BMUG:1982.3p2)

    一部のモニタ・サブルーチンが 1.1/1.2 共通のフックを経由していません。

    このパッチでモニタのバージョンに依存しなくなります。

    0EB6:F674 $FFE9 NMICLR
    0EBC:F20B $FFF2 MSOUT
    0EC2:F20B $FFF2 MSOUT
    0ECE:F20B $FFF2 MSOUT
    0F59:F67F $FFE6 NMISET

  • L2 BASIC V1.1用変更点 (BMUG:1982.3p2)
    0EBF:BBCF $BC7C SIZE

H68版のアセンブルリスト/オブジェクトを利用する場合

オリジナルのアセンブルソースにパッチを当てる形でソースを再構築してみましたが、変更個所が虫食い状態で再利用に向いていないと感じたので詳細は割愛します。

環境構築:エディタ - SCREEN EDITOR V2.0

SCREEN EDITOR V2.0 (BMUG:1983.1)

問題なく入力できて動いた
コマンドは入力方法の項に書く

環境構築:Tiny Language 1

プロンプトの問題

ダンプリストを入力する場合

明記は無いのですが、掲載ダンプは MB-6880L2(16K)用だと思います。

ダンプリストでは実行時スタック(原作ソースの STACK:$2FFF) が $3FFF になっています。($2001:3F)

原作とメモリマップが変わるため、コンパイル時やオブジェクトを実行した際にソースを壊す可能性があります。 32K用の変更をした際はこの問題は生じません。

32K用のバイナリを掲載してしまったのかな?とも思いましたが、16Kだと狭いので割り切ってこの配置にした可能性もあります。

  • バグFIX : 予約語(MHIGH)不良 (BMUG:1982.6p3) TEW

    原作でゼロページに配置されたシステム領域を $0080~ に変更した際の修正漏れです。

    1618:16 $86 TM2 (SYSTEM VAR MHIGH & MOD)
    1A1E:16 $86 WTABLE

  • バグFIX : 予約語(MOD)不良 (BMUG:1982.6p3) TEW

    原作でゼロページに配置されたシステム領域を $0080~ に変更した際の修正漏れです。

    161C:17 $87 TM2 (SYSTEM VAR MHIGH & MOD)
    216F:17 $87 WTABLE

  • 32K用変更点 (BMUG:1982.3p1)

    オブジェクト/ソース領域のバランスを変えたい場合に変更します。 エディタ側と一致させる必要があります。

    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~ ライブラリ アドレス表追加

H68版のアセンブルリスト/オブジェクトを利用する場合

  • 改造済みのオリジナルコードを利用する

  • 16K/32K
  • プロンプト問題のパッチ
参考:option.TL1_BM.asm
   *
   * 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
参考:TL1_BM.GAME1.asm (16K)
FALSE EQU 0                         
TRUE EQU !FALSE
USE_PROMPT_PATCH EQUFALSE 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"
参考:TL1_BM.EDIT2.asm (32K)
FALSE EQU 0                         
TRUE EQU !FALSE
USE_PROMPT_PATCH EQUFALSE 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-BM:GR

TL/1 改良版 (BMUG:1983.9) 森茂樹

概要

  • ベーシックマスターJr. のグラフィックに対応した TL/1-BMのバリエーション

    表題では「改良版」とされていますが、G-VRAMを避けるためメモリマップが異なる点以外の変更はありません。

    記事中では「TL/1GR」と表記されていましたが、ここでは「TL/1-BM:GR」と呼ばせていただきます。

    グラフィック関連の関数は TL/1 で記述されています。

  • 「SCREEN EDITOR V2.0」の使用を前提としている

    TL/1-BM のソース格納アドレスは、エディタ側の設定が反映されます。

    他のエディタを使用する場合は $1027 の値(SRCB+2)を変更する必要があります。

  • 作者の TL/1 には BMUG:1982.2 掲載の追加機能が実装されている模様

    拡張機能は使用されていませんでした。

    PLOT の競合について要確認

関連情報

  • TL/1-BM (BMUG:1982.2) 増田俊樹
  • TL/1 追加機能 (BMUG:1982.2) 杉本洋之

    CALL, CURSOR, TAB, PLOT(セミグラ)

    OBJBEG:$216F → $2281

  • TL/1 によるグラフィック (BMUG:1984.5-6) 松田潤

    サークルとカラー命令を追加

    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 EQUFALSE 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 のスクリーンエディタを使う場合は行番号が必要になります。

GAME-1の起動方法

  1. モニタの LOADコマンドで GAME-1, TL/1-BMをロードする
  2. モニタの GOコマンドで GAME-1を起動する
    COLD START :
    $0600
    HOT START :
    $

テキスト・エディタの基本操作

・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

プログラムのセーブ方法

プログラムのロード方法

操作方法 (SCREEN EDITOR V2.0)

SCREEN EDITOR V2.0 の起動方法

  1. モニタの LOADコマンドで SCREEN EDITOR V2.0, TL/1-BMをロードする
  2. モニタの GOコマンドで SCREEN EDITOR V2.0を起動する
    COLD START :
    $0A80
    HOT START :
    $

テキスト・エディタの基本操作

アドレスを省略した場合は $4000~

コンパイル時、ソースの先頭アドレスはエディタ側で設定した値になる
実行時スタック(STACK)は連動しないのでソースを壊さないように注意


ダンプリストのままだとオブジェクト生成でもソースを壊す可能性があるので、こまめにセーブする事


E : エディタへ
C : コンパイル (CALL $1000)
G : 実行 (CALL $2000)


エディタのコマンド
[カナ記号]+[ ] ] コマンドモードへ
T : 
B : 
F : 
S : 
L : 
V :
E : テキストエディタを抜ける

プログラムのセーブ方法

プログラムのロード方法

j68での入力方法

「GAME-1」,「SCREEN EDITOR V2.0」どちらのエディタでも自動タイプ機能が使えます。 自動タイプを使う場合は改行コードを気にする必要はありません。

準備段階での注意事項

実機と同様に入力する (非推奨)

テキストファイルを用意して自動タイプ機能で入力する

参考:プログラムリストをメモリに直接流し込む方法

コンパイルとオブジェクトの利用について

オブジェクトの配置は固定 (冒頭にライブラリが付く)

コンパイルから実行まで

コンパイル

オブジェクトの保存

オブジェクトの実行

オブジェクトの利用について


TL/1-BM [BASIC MATER]