ベーシックマスター L3 と区別するため「レベル2」と呼ばれることもあるようですが、ここでは「ベーシックマスター」とします。
ベーシックマスターは、Jr.でグラフィックが追加された以外は機種間のハードの差異はあまりありません。
ベーシックマスター用のソフトウェアは、モニタ・ルーチンを利用しているものが多いため MONITOR のバージョンによる非互換があります。 モニタ・ルーチンの呼び出しは、バージョンに依存しない形に書き変え可能な場合もあります。
メモリの実装量により調整
フック書き換えで機能強化する メモリの搭載量でいろいろ調整が必要 何をどうしたらよいか混乱しがち ゼロページが余っていない 発掘用の標準環境を決める
発掘隊では [L1] と表記しています。
ROM交換により LEVEL-2 BASIC V1.0 にバージョンアップしたもの。
発掘隊では MB-6880L2 と区別せず [L2] と表記しています。
記事によっては LII, Level-II などと表記されていることもあり、MONITOR,BASICとも異なるバージョンが載っている MB-6881(レベル2II) と紛らわしい。
[RESET/BREAK]+[カナ記号] : [カナ記号] を先に放すとホット・リセット (モニタに落ちる)
発掘隊では [L2] と表記しています。
発掘隊では [II] と表記しています。
1200baud対応は ROM交換だけでなく時定数の変更が必要になるため販売店で実施したようです。 時期に拠っては 1200baud仕様で販売されたようですが、型番の違いなど識別方法は不明。 また、この時定数の変更により非互換問題が生じたようです。(BMUG:198x.x)
64K に拡張しても通常使えるのは 44K です。(BASICでは配列に $8000を超えられない制約もあり?)
発掘隊では [Jr] と表記しています。
| 機種 | MONITOR | BASIC | 備考 | ||
|---|---|---|---|---|---|
| L1 | MB-6880 | V1.1 | 拡張ROMは外部I/O に搭載 | L1 (V1.1) | |
| (L2) | MB-6880(L2) | V1.1 | 拡張ROMは外部I/O に搭載 | L2 (V1.0) | ROM交換 |
| L2 | MB-6880 L2 | V1.1 | 拡張ROMは外部I/O に搭載 | L2 (V1.0) | |
| L2-II | MB-6881 | V1.2 | 拡張ROMは外部I/O に搭載 | L2 (V1.1) | |
| Jr. | MB-6885 | V1.2 | PrinterROM + MT-2 ROM | L2 (V1.1) | 後期は 1200baudROM が標準
ROM交換の場合は時定数の変更も必要 |
| V1.2 | PrinterROM + 1200baudROM | L2 (V1.1) | |||
| L | LOAD | テープから読み込む |
|---|---|---|
| P | PUNCH | テープにセーブする |
| M | MEMORY | 編集 |
| G | GO | 実行 |
| E | ESCAPE | BASICへ戻る |
PUNCH コマンド ⇒ 指示に従いパラメータを入力する ※ファイル名に二重引用符は不用 付けた場合は二重引用符もファイル名に含まれる
LOAD コマンド ⇒ 指示に従いパラメータを入力する
LEVEL-2 BASIC には V1.0, V1.1 の二種類があり、互換性問題があります。
V1.0 は MB-6880 の ROMを交換したものと MB-6880L2 に搭載 V1.1 は MB-6881, MB-6885(ベーシックマスター Jr.) の 二機種に搭載 雑誌の投稿記事では L2 を「LII」と表記している例もみられるので注意が必要です。
レベル1とレベル2の比較 BASICゲーム徹底研究 [2]
構成と被るので整理する
スクリーンエディタの仕様が L1/L2で異なる L1はほぼラインエディタ L2,L2-II で微妙に違う
※ファイル名に二重引用符は不用 付けた場合は二重引用符もファイル名に含まれる
ベーマスのスクリーン・エディタから英小文字やグラフィック文字を入力することができません。
でも不思議なことに、グラフィック文字等が混在するリストが掲載されているんですよ!
プログラム冒頭にフック書き換え(初期化)プログラムがあります。
改良版では CALL $1FB0 でフックが書き変わりフルキーボード化プログラムが有効になります。 実装メモリに合わせてリロケートした際はアドレスが変わります。
使用例 : "_カキクケ_カキクケ" ⇒ "♣♦♥♠カキクケ"
通常の入力では何とかなりますが、j68で自動タイプさせる用途には向かないと思います。
モニタルーチンをジャンプ・テーブル経由で呼ぶことで、モニタのバージョンの違いを吸収できます。
MONITOR 1.1/1.2 両対応化の例:大きなプログラムを入力する場合はリロケートが必要になります。
参考:改良版を実装メモリに合わせてリロケートする例
| 入力文字 | ␠ | ! | ” | # | $ | % | & | ’ | ( | ) | * | + | , | - | . | / |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 文字モード char code | ␠ $20 | ! $21 | ” $22 | # $23 | $ $24 | % $25 | & $26 | ’ $27 | ( $28 | ) $29 | * $2A | + $2B | , $2C | - $2D | . $2E | / $2F |
| 図形モード UTF-8 char code | ␠ 0020 $20 | α 03B1 $10 | β 03B2 $11 | γ 03B3 $12 | η 03B7 $13 | θ 03B8 $14 | λ 03BB $15 | μ 03BC $16 | π 03C0 $17 | τ 03C4 $18 | φ 03C6 $19 | ψ 03C8 $1A | ω 03C9 $1B | Σ 03A3 $1C | Ω 03A9 $1D | χ 03C7 $1E |
| 入力文字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 文字モード char code | 0 $30 | 1 $31 | 2 $32 | 3 $33 | 4 $34 | 5 $35 | 6 $36 | 7 $37 | 8 $38 | 9 $39 | : $3A | ; $3B | < $3C | = $3D | > $3E | ? $3F |
| 図形モード UTF-8 char code | 0 0030 $30 | 1 0031 $31 | 2 0032 $32 | 3 0033 $33 | 4 0034 $34 | 5 0035 $35 | 6 0036 $36 | 7 0037 $37 | 8 0038 $38 | 9 0039 $39 | : 003A $3A | ; 003B $3B | < 003C $3C | ➗ 2797 $1F | > 003E $3E | ┼ 253C $80 |
| 入力文字 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 文字モード char code | @ $40 | A $41 | B $42 | C $43 | D $44 | E $45 | F $46 | G $47 | H $48 | I $49 | J $4A | K $4B | L $4C | M $4D | N $4E | O $4F |
| 図形モード UTF-8 char code | ■ 25A0 $60 | a 0061 $61 | b 0062 $62 | c 0063 $63 | d 0064 $64 | e 0065 $65 | f 0066 $66 | g 0067 $67 | h 0068 $68 | i 0069 $69 | j 006A $6A | k 006B $6B | l 006C $6C | m 006D $6D | n 006E $6E | o 006F $6F |
| 入力文字 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | ¥ | ] | ^ | _ |
| 文字モード char code | P $50 | Q $51 | R $52 | S $53 | T $54 | U $55 | V $56 | W $57 | X $58 | Y $59 | Z $5A | [ $5B | ¥ $5C | ] $5D | ^ $5E | MODE 🔽 |
| 図形モード UTF-8 char code | p 0070 $70 | q 0071 $71 | r 0072 $72 | s 0073 $73 | t 0074 $74 | u 0075 $75 | v 0076 $76 | w 0077 $77 | x 0078 $78 | y 0079 $79 | z 007A $7A | ← 2190 $7B | → 2192 $7C | ↓ 2193 $7D | ↑ 2191 $7E | 🔼 $5F |
| 入力文字 | 。 | 「 | 」 | 、 | ・ | ヲ | ァ | ィ | ゥ | ェ | ォ | ャ | ュ | ョ | ッ | |
| 文字モード char code | 。 $A1 | 「 $A2 | 」 $A3 | 、 $A4 | ・ $A5 | ヲ $A6 | ァ $A7 | ィ $A8 | ゥ $A9 | ェ $AA | ォ $AB | ャ $AC | ュ $AD | ョ $AE | ッ $AF | |
| 図形モード UTF-8 char code | └ 2514 $81 | ┘ 2518 $82 | ┐ 2510 $83 | ┌ 250C $84 | ─ 2500 $85 | │ 2502 $86 | ╋ 254B $87 | ┤ 2524 $88 | ┬ 252C $89 | ├ 251C $8A | ┴ 2534 $8B | ╰ 2570 $8C | ╯ 256F $8D | ╮ 256E $8E | ╭ 256D $8F | |
| 入力文字 | ー | ア | イ | ウ | エ | オ | カ | キ | ク | ケ | コ | サ | シ | ス | セ | ソ |
| 文字モード char code | ー $B0 | ア $B1 | イ $B2 | ウ $B3 | エ $B4 | オ $B5 | カ $B6 | キ $B7 | ク $B8 | ケ $B9 | コ $BA | サ $BB | シ $BC | ス $BD | セ $BE | ソ $BF |
| 図形モード UTF-8 char code | 〈 2329 $90 | ⌄ 2304 $91 | 〉 232A $92 | ⌃ 2303 $93 | ○ 25CB $94 | ● 25CF $95 | ♣ 2663 $96 | ♦ 2666 $97 | ♥ 2660 $98 | ♠ 2665 $99 | 出 51FA $9A | ♪ 266A $9B | ♞ 265E $9C | ░ 2591 $9D | ☗ 2617 $9E | ﹨ FE68 $9F |
| 入力文字 | タ | チ | ツ | テ | ト | ナ | ニ | ヌ | ネ | ノ | ハ | ヒ | フ | ヘ | ホ | マ |
| 文字モード char code | タ $C0 | チ $C1 | ツ $C2 | テ $C3 | ト $C4 | ナ $C5 | ニ $C6 | ヌ $C7 | ネ $C8 | ノ $C9 | ハ $CA | ヒ $CB | フ $CC | ヘ $CD | ホ $CE | マ $CF |
| 図形モード UTF-8 char code | 時 6642 $E0 | 分 5206 $E1 | 秒 79D2 $E2 | 年 5E74 $E3 | 月 6708 $E4 | 日 65E5 $E5 | 火 706B $E6 | 水 6C34 $E7 | 木 6728 $E8 | 金 91D1 $E9 | 土 571F $EA | 人 4EBA $EB | 点 70B9 $EC | 回 56DE $ED | 文 6587 $EE | 名 540D $EF |
| 入力文字 | ミ | ム | メ | モ | ヤ | ユ | ヨ | ラ | リ | ル | レ | ロ | ワ | ン | ゛ | ゜ |
| 文字モード char code | ミ $D0 | ム $D1 | メ $D2 | モ $D3 | ヤ $D4 | ユ $D5 | ヨ $D6 | ラ $D7 | リ $D8 | ル $D9 | レ $DA | ロ $DB | ワ $DC | ン $DD | ゛ $DE | ゜ $DF |
| 図形モード UTF-8 char code | ▏ 258F $F0 | ▎ 258E $F1 | ▍ 258D $F2 | ▕ 2595 $F3 | F0F4 $F4 | F0F5 $F5 | ▔ 2594 $F6 | F0F7 $F7 | F0F8 $F8 | ▁ 2581 $F9 | ▂ 2582 $FA | ▃ 2583 $FB | / FF0F $FC | \ FF3C $FD | ⧓ 29D3 $FE | ⧗ 29D7 $FF |
[BREAK] で機能停止した場合は再度初期化が必要なので注意してください。
自動タイプはテキストファイル指定だけでなくコピペも可能です。
グラフィック文字から仮文字への変換と '_' の挿入は j68が行ないます。 グラフィック文字は UTFにマップした文字でも入力可能です。
j68用のシンボルフォントを使えば、LIST# でファイルに落としたリスト等もそのまま利用可能です。
有効化した時にベーマス側で動かす変換プログラムを送り込むのでロード作業は不要です。
ベーマス側にロードする変換プログラムはメモリの実装に合わせ、cfg で予め指定しておくことができます。
タイプするテキストの先頭に「CALL $7FD0[改行]」(32K版) を記述しておくと楽ができます。
「FullChar Patch」を無効化しても変換プログラムはアンロードされません。
基本的に後始末は不要なので、気にしなくて良いと思います。
リセット時にメモリの内容が起動時の状態に戻ります。 パッチが有効になっていても、ベーマス側のプログラムがクリアされるので動作しなくなります。
「FullChar Patch」のチェックを外す→付ける で再ロードされます。
PRINT CHR$(...) で表示したグラフィック文字をスクリーンエディタで「拾って」打ち込む方法です。
L2(V1.0) でも不可能ではないけれど、色々クセがあって失敗しがち。 推奨方法なら L2(V1.0) でも失敗しにくいと思います。
L2(V1.0) では CHR$() が列挙に対応していないので CHR$($96);CHR$($97);CHR$($98);CHR$($99) の様に記述してください。
⇒ 次の行に ♣♦♥♠ が表示される
⇒ > PRINT_"♣♦♥♠"
⇒ カーソルを戻し過ぎると失敗する
⇒ DELを押しても見た目は変化しないが、この手順を踏まないと失敗する
タイプ量は若干増えるけれど失敗が少ない方法です。
⇒ 次の行に ♣♦♥♠ が表示される
⇒ 戻り切るとDELは反応しなくなるので安心して連打できる
⇒ 次の行に 100 PRINT "♣♦♥♠" が表示される
⇒ 戻り切るとDELは反応しなくなるので安心して連打できる
⇒ 次の行に 100 PRINT "♣♦♥♠" が表示される
⇒ 次の行に ⧓♣♦♥♠⧗ が表示されるので、あとは入力作業と同じ
でも、ちょっとだけなら ///
ベーマスのグリフで ASCIIダンプされるので確認しながら作業できます。
コントロールコードに割り当てられた文字もベーマスのグリフでダンプされますが、BASICでは使用できません。
文字列で指定する場合は先頭に「asc:」付けてください。
仮文字を工夫しておけば書き換えが楽になります。
例:"AAAA" を "♣♦♥♠" に置換する
- Search
- asc:AAAA
- Replace
- 96979899
移植モノの調査で時々必要になるのでまとめておきたい 0400-08FF BASICのワークエリア 0900- BASIC TEXT
移植モノの調査で時々必要になるのでまとめておきたい MB-6881 アドレス ラベル 内容 初期設定値 00 01 USRNMI ユーザーNMIベクトル F0C6 02 03 USRIRQ ユーザーIRQベクトル F06E 04 05 BREAKV BREAKキーからのNMIベクトル B:BB7E M:F0D0 06 07 TIMERV タイマー用割り込みベクトル F06E 08 09 RAMEND RAMの最大番地 16K:3FFF 0A TIME1 0000 0B TIME2 0C TIME3 1秒タイマー 0≦TIME3≦59 00 0D-27 ------ ※モニタのワークエリア 28 29 2A ASCIN 1文字入力用ジャンプテーブル 7EFA44 2B 2C 2D ASCOUT 1文字出力用ジャンプテーブル 7EF7A6 2E 2F 30 BYTIN メモリーブロック入力用ジャンプテーブル 7EF71A 31 32 33 BYTOUT メモリーブロック出力用ジャンプテーブル 7EF615 34-3A ------ ※モニタのワークエリア 3B 3C RECTOP カセット記録の先頭番地 ---- LDTOP カセット再生の先頭番地 MSTTOP メモリー転送の先頭番地 3D 3E RECEND カセット記録の最終番地 ---- LDMAX カセット再生の最終番地 MSTEND メモリー転送の最終番地 3F 40 CPYTOP メモリー転送のコピー先の先頭番地 ---- 41 42 CPYEND メモリー転送のコピー先の最終番地 ---- 43-4A FNAME カセット記録, 再生時のファイル名 -------- 4B-71 ------ ※モニタのワークエリア 72-FF ------ ※BASICのワークエリア
| ラベル | アドレス | 内容 | 備考 | ||
|---|---|---|---|---|---|
| RAMEND | $0008,$0009 | $1FFF | 実装メモリ 8K | ||
| $3FFF | 実装メモリ 16K | ||||
| $7FFF | 実装メモリ 32K | ||||
| $AFFF | 実装メモリ 64K | ||||
| ラベル | エントリ | アドレス | MON 1.1 | MON 1.2 | 備考 |
| ASCIN | $0028 | $0029,$002A | $FA44 | $FA55 | 1文字入力用ジャンプテーブル |
| ASCOUT | $002B | $002C,$002D | $F7A6 | $F7AB | 1文字出力用ジャンプテーブル |
| BYTIN | $002E | $002F,$0030 | $F71A | $F71F | メモリーブロック入力用ジャンプテーブル |
| BYTOUT | $0031 | $0032,$0033 | $F615 | $F619 | メモリーブロック出力用ジャンプテーブル |
| ラベル | エントリ | アドレス | MON 1.1 | MON 1.2 | 備考 |
|---|---|---|---|---|---|
| CHRGET | $F012 | $F013,$F014 | $FA44 | $FA55 | 1文字入力用ジャンプテーブル |
| CHROUT | $F015 | $F016,$F017 | $F7A6 | $F7AB | 1文字出力用ジャンプテーブル |
| LOAD | $F018 | $F019,$F01A | $F71A | $F71F | メモリーブロック入力用ジャンプテーブル |
| SAVE | $F01B | $F01C,$F01D | $F615 | $F619 | メモリーブロック出力用ジャンプテーブル |
フック書き換えで利用可能なもの
ターボ化された個体での非互換について
カセットでは「カラーグラフィックユーティリティ」との表記だが「カラーアダプタ」が無くても有用 ソースリストでは「COLOR AND GRAPHIC UTILITY PROGRAM」 I/O:1982.5, ベーシックマスター活用研究 モニタから使う場合の手順等も記事にあったはず
削除予定 (独立した文書としてまとめる)