FM-7/8シリーズ用プログラミング言語とその処理系
本ページでは、FM-7/8シリーズ用プログラミング言語とその処理系について紹介しています。
ただし、市販OS用のものは除きます。(各OSのページで紹介予定です。)
すなわち、本ページで紹介しているソフトウェアはほどんどがF-BASICファイルシステムで動作するものです。
各画面キャプチャについては、XM7を使用させていただきました。
PI.さん、たけがみりうさん、いつも感謝しております。
また、本ページの各表の作成にはThinkさんのCSV→Table変換サイトのお世話になりました。
ありがとうございました。
お急ぎの方へ。
≪言語別コーナー≫
・アセンブラ、逆アセンブラ、デバッガ
・Kコンパイラ
・SYS-9コンパイラ
・GAMEインタプリタ、コンパイラ
・TL/1コンパイラ
・COMSOLコンパイラ
・Pascalコンパイラ
・Cコンパイラ
8. FM-7/8シリーズ用プログラミング言語とその処理系
≪言語別コーナー≫
8.1 アセンブラ、逆アセンブラ、デバッガ
●
F-BASICに次いで(?)良く使われたのが、このアセンブラ関係だと思います。
各社より多数発売、各誌・書で多数発表されていました。
はせりんの知る限りの情報を下記にまとめておきましたが、モレもあると思います。
ご存じの方はぜひお知らせください。
市販のもの(雑誌掲載のカセットサービス等除く) |
提供元 |
発売年月 |
型格 |
品名 |
価格 |
機種 |
メディア |
エディタ |
アセンブラ |
逆アセンブラ |
デバッガ |
備考 |
富士通 |
1981年5月 |
SM07217-A011 |
アブソリュートアセンブラ |
18,000 |
FM-8 |
5inch 2D |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
1982年5月 |
SM07217-A012 |
アブソリュートアセンブラ |
18,000 |
FM-8 |
8inch 2D |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
1981年5月 |
SM07217-G001 |
デバッガ・逆アセンブラ |
15,000 |
FM-8 |
5inch 2D |
|
|
○ |
○ |
|
1982年5月 |
SM07217-G002 |
デバッガ・逆アセンブラ |
15,000 |
FM-8 |
8inch 2D |
|
|
○ |
○ |
|
1982年11月 |
SM07317-A111 |
アブソリュートアセンブラ |
18,000 |
FM-7 |
5inch 2D |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
1982年11月 |
SM07317-G101 |
デバッガ・逆アセンブラ |
15,000 |
FM-7 |
5inch 2D |
|
|
○ |
○ |
|
1984年5月 |
SM07317-L103 |
F-BASIC Tool Box V1.0 |
22,000 |
FM-77 |
3.5inch 2D |
|
○ |
○ |
○ |
アセンブラ、デバッガ・逆アセンブラ、倍精度関数ライブラリ |
1984年5月 |
SM07317-L104 |
F-BASIC Tool Box V1.0 |
22,000 |
FM-7/ NEW7 |
5inch 2D |
|
○ |
○ |
○ |
アセンブラ、デバッガ・逆アセンブラ、倍精度関数ライブラリ |
COMAS |
|
COMAS-FAC |
8,000 |
FM-8 |
TAPE |
○ |
○ |
|
|
アセンブラ、エディタ |
|
COMAS-FGC |
4,000 |
FM-8 |
TAPE |
|
|
○ |
|
逆アセンブラ |
|
COMAS-FDC |
8,000 |
FM-8 |
TAPE |
|
|
|
○ |
デバッガ |
|
COMAS-FDT |
48,000 |
FM-8 |
5inch 2D |
○ |
○ |
○ |
○ |
独自ファイルシステム、F-BASICとファイル交換可。後に\28,000に値下げ。 |
1983年5月頃 |
COMAS-FDT2 |
33,000 |
FM-7,8 |
5inch 2D |
○ |
○ |
○ |
○ |
上記にTRACE機能追加。 |
橋口技研 |
|
6809アセンブラ |
8,000 |
FM-7/8 |
5inch 2D |
|
○ |
|
|
|
|
6809逆アセンブラ |
8,000 |
FM-7/8 |
5inch 2D |
|
|
○ |
|
|
|
6809デバッガ |
12,000 |
FM-7/8 |
5inch 2D |
|
|
|
○ |
|
アートディンク/OA:サービス研究所 |
|
6809 ASSEMBLER-AD |
7,900 |
FM-7/8 |
TAPE |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
|
6809 ASSEMBLER-AD |
9,800 |
FM-7/8 |
5inch 2D |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
|
6809 ASSEMBLER-AD |
9,800 |
FM-77 |
3.5inch 2D |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
|
6809 DISASSEMBLER-AD |
7,900 |
FM-7/8 |
TAPE |
|
|
○ |
|
|
|
6809 DISASSEMBLER-AD |
9,800 |
FM-7/8 |
5inch 2D |
|
|
○ |
|
|
|
6809 DISASSEMBLER-AD |
9,800 |
FM-77 |
3.5inch 2D |
|
|
○ |
|
|
|
CORE-AD |
6,900 |
FM-7/8 |
TAPE |
|
|
|
○ |
|
|
CORE-AD |
7,900 |
FM-7/8 |
5inch 2D |
|
|
|
○ |
|
|
CORE-AD |
7,900 |
FM-77 |
3.5inch 2D |
|
|
|
○ |
|
キャリーラボ |
|
CS-61 |
BASE09 |
14,000 |
FM-7/8 |
TAPE |
○ |
○ |
○ |
△ |
(市販版、デバッガが添付されている) |
Sofix |
|
Debug-Boy 6809 |
12,000 |
FM-7/ NEW7 |
5inch 2D |
|
△ |
△ |
○ |
|
|
Debug-Boy 6809 |
12,000 |
FM-77 |
3.5inch 2D |
|
△ |
△ |
○ |
|
ツクモ |
|
C-DOS7 Ver 2.0 |
9,800 |
FM-7/ NEW7 |
5inch 2D |
|
△ |
△ |
○ |
拡張モニタ内にミニアセンブラ、逆アセンブラ、デバッガ内蔵 |
|
|
|
|
|
|
|
|
|
|
|
|
雑誌・書籍掲載のもの |
出版元 |
発行年月 |
掲載誌・書 |
タイトル |
掲載ページ |
機種 |
作者・開発元 |
エディタ |
アセンブラ |
逆アセンブラ |
デバッガ |
備考 |
アスキー |
1983年10月 |
アスキー |
MIGHTY-7 |
272 |
FM-7/8 |
c.mos(兵藤 嘉彦)氏 |
○ |
○ |
○ |
○ |
|
工学社 |
1982年3月 |
I/O |
エディタ・アセンブラ |
257 |
FM-8 |
馬場 二郎氏 |
○ |
○ |
|
|
ファイル管理はF-BASIC等で行う |
工学社 |
1983年5月 |
I/O |
エディタ・アセンブラ V2.0 |
260 |
FM-7/8 |
馬場 二郎氏 |
○ |
○ |
|
|
ファイル管理はF-BASIC等で行う |
工学社 |
1984年12月 |
I/O |
エディタ・アセンブラ V3.1 |
241 |
FM-7/8 |
馬場 二郎氏 |
○ |
○ |
|
|
ファイル管理機能あり |
工学社 |
1983年7月 |
I/O |
エディタ・アセンブラV2.0 を ALL RAM MODE で使う |
304 |
FM-8 |
庄野 温夫氏 |
○ |
○ |
|
|
|
工学社 |
1984年6月 |
I/O |
エディタ・アセンブラ V2.0 のFM-11への移植 |
232 |
FM-11 |
猪股 宏文氏 |
○ |
○ |
|
|
|
工学社 |
1983年8月 |
I/O |
MTOOL09 |
314 |
FM-7/8 |
越野 洋介氏 |
|
|
○ |
○ |
アブソリュートアセンブラ用ソース |
工学社 |
1983年10月 |
I/O |
MTOOL09の出力をエディタ・アセンブラV2.0に |
314 |
FM-7/8 |
エンジンルームS.N. |
|
|
○ |
|
エディタ・アセンブラV2.0用ソース |
工学社 |
1984年1月 |
I/O |
URA DOS添付のSUPER MONITOR |
341 |
FM-7 |
DOSのTom氏 |
|
|
△ |
○ |
|
工学社 |
1984年4月,5月,6月,7月 |
I/O |
BASE09 |
273, 261, 337, 306 |
FM-7/8 |
キャリーラボ |
○ |
○ |
|
|
独自BIOS、ファイル管理はテープのみ |
工学社 |
1982年6月 |
I/O |
U-MONITOR |
216 |
FM-8 |
上野 俊見氏 |
|
|
|
○ |
|
工学社 |
1982年9月 |
I/O |
F-BASIC EXPANDER内の拡張モニタ |
345 |
FM-8 |
笠作 貴弥氏 |
|
|
△ |
○ |
|
工学社 |
1983年6月 |
I/O |
F-BASIC EXPANDER内の拡張モニタ |
293 |
FM-7 |
笠作 貴弥氏 |
|
|
△ |
○ |
|
工学社 |
1985年6月 |
I/O |
F-ED エディタシステム |
208 |
FM-7/N7/77 |
豊嶋 春暢氏 |
○ |
|
|
|
|
工学社 |
1985年11月 |
I/O |
スクリーンエディタ Ver 1.0 |
313 |
FM-7/N7/77 |
笠 晃一氏 |
○ |
|
|
|
F-BASICコメント文用(F-BASICアスキーファイルも可) |
工学社 |
1986年10月 |
I/O |
FM-Cコンパイラ用 cc.m cc.a |
209 |
FM-7/N7/77 |
広瀬 峰太郎氏 |
○ |
○ |
|
|
アセンブラはFM-C専用の特殊文法 |
工学社 |
1987年2月 |
I/O |
Draco-C用 asmb |
185 |
FM-7/N7/77 |
笠 晃一氏 |
|
○ |
|
|
ソースはF-BASICテキストのコメント文 |
工学社 |
1987年3月 |
I/O |
FM-Pascal用 edit |
183 |
FM-7/N7/77 |
黒姫氏 |
○ |
|
|
|
|
工学社 |
1982年7月20日 |
FM-8活用研究 |
6809デバッガ |
44 |
FM-8 |
笠作 貴弥氏 |
|
|
△ |
△ |
|
6809 SUPER TRACER V2.9 |
48 |
FM-8 |
Mr. かれきさん氏 |
|
|
|
○ |
|
6809エディタ・アセンブラ |
35 |
FM-8 |
馬場 二郎氏 |
○ |
○ |
|
|
|
2PASS DISASSEMBLER |
39 |
FM-8 |
馬場 二郎氏 |
|
|
○ |
|
6809エディタ・アセンブラ用ソース |
スクリーン・アセンブラ |
26 |
FM-8 |
アニーバンネス氏 |
○ |
○ |
○ |
|
|
工学社 |
1983年7月25日 |
FM-7/8活用研究 |
SUPER MONITOR |
16 |
FM-7/8 |
アニーバンネス氏 |
|
△ |
△ |
○ |
|
エディタ・アセンブラ V2.0 |
27 |
FM-7/8 |
馬場 二郎氏 |
○ |
○ |
|
|
|
F-BASIC EXPANDER内の拡張モニタ |
57 |
FM-7/8 |
笠作 貴弥氏 |
|
|
△ |
○ |
|
工学社 |
1984年4月10日 |
FM-7/11活用研究 |
URA DOS添付のSUPER MONITOR |
113 |
FM-7 |
DOSのTom氏 |
|
|
△ |
○ |
|
エディタ・アセンブラ⇔BASICコミュニケーションプログラム |
121 |
FM-7 |
吉川 尚之氏 |
○ |
○ |
|
|
エディタ・アセンブラV2.0 をALL RAM MODEで使う。 |
micro-vi |
129 |
FM-7 |
津田 伸彦氏 |
○ |
|
|
|
プレインテキストとF-BASICコメント文の両方対応 |
システム開発用簡単エディタ EDIT_S |
160 |
FM-7/11 |
T.T.S.氏 |
○ |
|
|
|
ファイル管理はF-BASIC等で行う |
工学社 |
1985年3月15日 |
FM-7/11活用研究[第2集] |
BASE09 |
17 |
FM-7/8 |
キャリーラボ |
○ |
○ |
|
|
|
エディタ・アセンブラ V3.1 |
49 |
FM-7/8 |
馬場 二郎氏 |
○ |
○ |
|
|
|
MTOOL09 |
73 |
FM-7/8 |
越野 洋介氏 |
|
|
○ |
○ |
アブソリュートアセンブラ用ソース |
Semi-Automatic Disassembler |
189 |
FM-7/8 |
越野 洋介氏 |
|
|
○ |
|
|
エディタ・アセンブラ V2.0 のFM-11への移植 |
176 |
FM-11 |
猪股 宏文氏 |
○ |
○ |
|
|
|
ソフトバンク |
1987年6月 |
Oh!FM |
スーパー簡易アセンブラ |
122 |
FM-7 |
|
|
○ |
|
|
|
ソフトバンク |
1987年9月 |
Oh!FM |
トレーサ&ディスアセンブラ |
42 |
FM-7/8/ 11 |
|
|
|
○ |
○ |
|
ソフトバンク |
1988年8月 |
Oh!FM |
標準マクロアセンブラ D-ASM |
18 |
FM-7/77 /AV |
滝本 真澄氏 |
|
◎ |
|
|
裏RAM上に常駐 |
エディタアセンブラ BASM |
60 |
FM-7/8/ 11 |
加藤 宏光氏 |
○ |
○ |
|
|
|
スクリーンエディタ BAS-DUET |
51 |
FM-7/77 /AV |
三谷 直之氏 |
○ |
|
|
|
|
ASM-JOIN |
58 |
FM-77 /AV |
三谷 直之氏 |
|
|
|
|
D-ASMとBAS-DUETの切り替え |
ソフトバンク |
1989年6月 |
Oh!FM |
6809用トレーサ Dr.コロンボ |
72 |
FM-7/77 /AV |
戸田 浩氏 |
|
|
△ |
○ |
|
ソフトバンク |
1989年8月 |
Oh!FM |
6809ソースジェネレータ Dr.ルパン |
120 |
FM-7/77 /AV |
戸田 浩氏 |
|
|
○ |
|
アブソリュートアセンブラ用ソース |
ソフトバンク |
1990年1月 |
Oh!FM |
ソースオプティマイザ ライト兄弟 |
108 |
FM-7/77 /AV |
戸田 浩氏 |
○ |
|
|
|
アブソリュートアセンブラ用、Draco C用 |
徳間書店 |
1984年10月 |
テクノポリス |
テクポリ特製アセンブラ |
121 |
FM-7 |
イイシャンテン氏 |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
CQ出版 |
1982年8月 |
インターフェース |
ASSIST09のFM-8への移植 |
138 |
FM-8 |
高橋豊氏 |
|
|
|
○ |
オリジナルはMOTOROLA社 |
CQ出版 |
1984年11月 |
インターフェース別冊 6809ソフトウェア開発 |
アセンブラ/エディタ |
58 |
FM-7/8 |
高橋豊氏 |
○ |
○ |
|
○ |
デバッガはASSIST09 |
|
|
|
|
|
|
|
|
|
|
|
|
ソフトバンク |
1985年8月18日 |
FMマシン語活用レクチャー |
MY ASSEMBLER |
215 |
FM-7/N7 /77/8 |
河合 宏之氏 |
|
○ |
|
|
ISBN4-930795-109-C0055 \2000E |
ソフトバンク |
1985年12月18日 |
Making of 6809 Assembler―作って学ぶエディタ・アセンブラ |
アセンブラ V1.0 |
97 |
FM-7/N7 /77 |
菅原 博英氏 |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述 |
エディタ・アセンブラ V2.0/2.1/2.5 |
189 |
FM-7/N7 /77 |
菅原 博英氏 |
○ |
○ |
|
|
ISBN4-930795-13-3-C0055 \2500E |
秀和システム |
1985年4月22日 |
FM-7シリーズ解析マニュアルエクストラ |
ASM9 |
205 |
FM-7/N7 /77 |
北島 秀樹氏 |
|
○ |
|
|
ソースはF-BASICテキストのコメントで記述
ISBN4-87966-044-2 C0000 \2500E |
秀和システム |
1984年6月24日 |
FM-7/N7/77ユーテリティプログラム応用実例集 |
拡張モニタ EXMON |
11 |
FM-7/N7 /77 |
塩見 真一氏 |
|
|
|
○ |
ISBN4-87966-020-5 C0000 \2500E |
フルスクリーンエディタ EDIT20 |
97 |
FM-7/N7 /77 |
箕原 辰夫氏 |
○ |
|
|
|
ミニアセンブラ MINIASM9 |
196 |
FM-7/N7 /77 |
小関 順氏 |
|
△ |
|
|
ディスアセンブラ DISASM |
247 |
FM-7/N7 /77 |
中村 英都氏 |
|
|
○ |
|
シミュレーションデバッガ DEBUG |
273 |
FM-7/N7 /77 |
印南 比呂志氏 |
|
|
|
○ |
|
|
|
|
|
|
|
|
|
|
|
|
ネットで公開のもの |
Aufheben Software |
|
OS-0 |
OS-0付属のED |
|
FM-7/N7 /77 |
大山 礼仁氏 |
○ |
|
|
|
http://software.aufheben.info/ooholdpc/os0.html |
OS-0付属のASM0 |
|
FM-7/N7 /77 |
大山 礼仁氏 |
|
○ |
|
|
OS-0付属のDISASM0 |
|
FM-7/N7 /77 |
大山 礼仁氏 |
|
|
○ |
|
アセンブラ:◎=マクロ機能あり、△=ラインアセンブラ
逆アセンブラ:○=ソースジェネレート、△=ライン逆アセンブラ
デバッガ:○=ブレークポイント、もしくはトレース機能
●富士通製アブソリュートアセンブラです。(各画像をクリックするとフルサイズの画像になります。)
・まずは起動画面です。
・SOFT:FM-7 アブソリュートアセンブラ V1.1
・型格:SM07317-A111
・機種:FM-7シリーズ、FM-8 + F-BASIC V2.0
・起動:F-BASIC V3.0 L1.0 (830311版)
・動作条件:F-BASIC V2.0以上(FM-8可)
・オリジナルフロッピーは F-BASIC V3.0 L1.0 で起動します。
ドライブ数、ファイル数はデフォルトの通り(=2 drive, 1 file)とします。
(増やすとメモリ不足で動作しない可能性があります。)
サンプルプログラム等も添付されず、あっさりとした内容です。
・せっかくなのでサンプルプログラムを作成してみます。
・F-BASIC のコメント行で記載します。作成後に、忘れずに アスキーセーブ します。
・上記をアセンブルしてみた結果です。
・SOFT:FM-7 アブソリュートアセンブラ V1.1
・PROGRAM:ASM09、ASM09EB
・ソースファイル指定は必須です。リスト出力とオブジェクト出力は省略可能です。
・LIST DEVICE は、"SCRN: もしくは "LPT0: を指定します。
・この例ではオンメモリにオブジェクトコードを生成しているので、即実行してみてます。
サポートされている入出力ファイル・デバイスは次の通りです。
|
ファイル入出力 |
直接出力 |
カセット |
ディスク |
バブル |
メモリ |
画面 |
プリンタ |
ソース |
○ |
○ |
△ |
|
|
|
オブジェクト |
|
○ |
△ |
○ |
|
|
リスト |
|
|
|
|
○ |
○ |
ソースファイルは、F-BASIC のコメント文(')で記述し、かつアスキーSAVEされている必要が
あります。
どれだけ使っていた人がいたか微妙ですが、カセットベースでの運用も可能となっています。
この場合、オブジェクトはメモリに出力して、別途カセットにセーブする必要があります。
バブルメモリカセットは、FM-8 + F-BASIC V2.0 で利用する場合に使用可能です。
オブジェクトをメモリに出力する場合には、 $4000〜$6FFF の範囲にしないと、アセンブラ
やDISK BASICを破壊しますので要注意です。
オブジェクトをオンメモリに出力するか否かは、ASM09の操作では指定できず、ソースファイル
中の OPT疑似命令で指定します。(これはかなり不便な仕様と思います。)
OPT疑似命令(*はデフォルト設定値)
* OBJ ファイルにオブジェクトコード生成する
NOOBJ ファイルにオブジェクトコード生成しない
* MEM オンメモリにオブジェクトコード生成する
NOMEM オンメモリにオブジェクトコード生成しない
* LIST ソースおよびオブジェクトコードのリストを生成する
NOLIST ソースおよびオブジェクトコードのリストを生成しない
* GEN リスト生成時、FCC/FCB/FDB命令の展開系の全てを印刷する
NOGEN リスト生成時、FCC/FCB/FDB命令の展開系の全てを印刷しない(先頭の1or2バイトのみ印刷)
* SYM シンボルテーブルリストを生成する
NOSYM シンボルテーブルリストを生成しない
* W 警告メッセージを印刷する
NOW 警告メッセージを印刷する
PAGE=nn プリンタ印刷時の1ページの行数。10≦nn≦255の範囲で。デフォルトは 58。
LLEN=nn プリンタ印刷時の1行の桁数。 50≦nn≦130の範囲で。デフォルトは 79。
ASM09メモリマップ
0 -+-------------------------------------+
| F-BASIC ワークエリア |
BF9 -+-------------------------------------+
| ASM09 |
140E -+-------------------------------------+
| 変数領域 |
-+-------------------------------------+
| 文字領域、スタック |
1800 -+-------------------------------------+
| |
| ASM09EB |
| |
3D90 -+-------------------------------------+
| |
| シンボルテーブル領域 |
| / |
| オブジェクトコード領域 |
| |
71D5 -+-------------------------------------+
| DISK BASIC |
8000 -+-------------------------------------+
| |
| F-BASIC ROM |
| |
| |
FC00 -+-------------------------------------+
| I/O、BOOT ROM他 |
FFFF -+-------------------------------------+
・カセットテープからソースを読み込んでアセンブルしてみた例です。
・SOFT:FM-7 アブソリュートアセンブラ V1.1
・PROGRAM:ASM09、ASM09EB
・PASS1 で、PLAY ボタンを押しなさい、
PASS2 で、巻き戻しなさい、PLAY ボタンを押しなさい
というステップが追加されます。(ASM09EB 内部が 2PASS であることがわかります。)
それ以外は DISKから読み込む場合と違いはありません。
・オブジェクトコードはカセットテープには出力できませんので、オンメモリ出力にするか、ディスクに出力します。
参考文献
82SM-000050-1 参考文献:FM-7 アブソリュートアセンブラ解説書 1983年6月(富士通)
●馬場二郎さんによる、エディタ・アセンブラです。
FM-7/8シリーズの定番開発環境として一世を風靡した、エディタ・アセンブラです。
いくつかバージョンが発表されています。
(はせりんは現役時代には使ったことなかったのですが...)
・オリジナル版の エディタ・アセンブラ V1.0 です。
・SOFT:エディタ・アセンブラ V1.0
・開発者:馬場 二郎さん
・機種:FM-8 (I/O誌には BM-L3への移植記事があります)
・掲載誌:I/O 1982年3月号、FM-8活用研究
・左の画面は、あらかじめ作成しておいたテキストファイルを読み込んだ後、エディタ・アセンブラを起動した様子です。
・ファイルの管理機能がないため、既存のテキストファイルはエディタアセンブラの起動前に読み込んでおきます。
テキストとは言いながら、$1000〜 をバイナリで SAVE しておく必要があります。
(SAVEM のアドレスは、R コマンドで事前に確認しておきます。)
・さっそくアセンブルを実行してみます。
・SOFT:エディタ・アセンブラ V1.0
・機種:FM-8
・2PASS アセンブラですが、1、2 と手動で実行します。
1 ラベル登録
2 コード生成、リスト出力
・最後に B コマンドで F-BASIC のモニタ(MON) に戻っています。
(直接 F-BASIC には戻れないようです。)
・生成されたオブジェクトコードを実行してみます。
・SOFT:エディタ・アセンブラ V1.0
・機種:FM-8
・モニタから、G6000 で実行します。
すると、Hello World. が正しく表示されるのですが、なぜかエディタ・アセンブラに戻ってしまいます。
・そこで再度 B コマンドでモニタに移動した後、CTRL-C で F-BASIC に戻ります。
F-BASIC 上から EXEC &H6000 を実行すると、正しく Hello World. が表示された後、F-BASIC に戻ります。
コマンド
1 アセンブラのPass 1(ラベル登録)を実行する
2 アセンブラのPass 2(コード生成)を実行する
B BASIC (もしくはMON) に戻る
Dxxxx[,yyyy] テキストの削除
Ixxxx テキストの入力(追加)、カラ行でコマンドに戻る
L[xxxx] テキスト表示
Mxxxx xxxx行を削除し、その場所に入力
P プリンタ ON/OFF 切り替え
R システム・リポート
S テキスト・クリア
T アセンブル時のリスト表示 ON/OFF 切り替え
制限事項:
ANDCC は ANDC と記述。
,PCR は ,PC と記述。
ラベル間の演算は足し算のみ。(-でも+演算される。)
エディタが貧弱であり、1文字間違えても1行入力しなおしになる。
FM-7ではうまくモニタ(MON)にもどらないため、FM-8(F-BASIC V1.0)専用と考えた方がよい?
エディタ・アセンブラ メモリマップ
0 -+-------------------------------------+
| F-BASIC ワークエリア |
xxx -+-------------------------------------+
| 空き |
1000 -+-------------------------------------+
| テキストエリア | テキストファイルは、F-BASICに戻り
| ↓ ↓ | LOADM, SAVEM で管理する必要がある。
| | (富士通版アセンブラとは非互換)
4000 -+-------------------------------------+
| |
| EDASM本体 |
| |
5500 -+-------------------------------------+
| ラベル・テーブル |
| ↓ ↓ |
| |
| ↑ ↑ |
| システム・スタック |
(71D5)-+-------------------------------------+
| (DISK BASIC) |
8000 -+-------------------------------------+
| | F-BASIC ROMは、BIOSのみ使用。
| F-BASIC ROM | (BIOS さえあれば裏RAM動作可)
| |
| |
FC00 -+-------------------------------------+
| I/O、BOOT ROM他 |
FFFF -+-------------------------------------+
エディタ・アセンブラV1.0発表から一年、かなり強化されたV2.0が発表されました。
強化点は次の通りで、特にエディタが改善されてます。
・ブロックコピー、移動機能
・サーチ機能
・ポインタ(行単位)の追加
・ヘルプ機能(コマンドリスト)
・スクリーンエディタ内蔵(Lコマンドの直後のみ)
・クロスリファレンス出力可能
・エディタ・アセンブラ V2.0 です。
・SOFT:エディタ・アセンブラ V2.0
・開発者:馬場 二郎さん
・機種:FM-7/8
・掲載誌:I/O 1983年5月号、FM-7/8活用研究
(FM-7/11活用研究にてBug Fix記事あり:$5B87=$4E)
・左の画面は、あらかじめ作成しておいたテキストファイルを読み込んだ後、エディタ・アセンブラを起動した様子です。
・ファイルの管理機能がないため、既存のテキストファイルはエディタアセンブラの起動前に読み込んでおきます。
テキストとは言いながら、$1000〜 をバイナリで SAVE しておく必要があります。
(SAVEM のアドレスは、R コマンドで事前に確認しておきます。)
・アセンブル及び生成結果の実行例です。
・SOFT:エディタ・アセンブラ V2.0
・機種:FM-7/8
・2PASS アセンブラですが、1、2 と手動で実行します。
1 ラベル登録
2 コード生成、リスト出力
・最後に B コマンドで F-BASIC に戻り、生成されたオブジェクトコードを実行しています。
コマンド
1 アセンブラのPass 1(ラベル登録)を実行する
2 アセンブラのPass 2(コード生成)を実行する
B BASIC (もしくはMON) に戻る
Cxxxx,yyyy,zzzz xxxx行からyyyy行までをzzzz行の後ろにコピー
Dxxxx[,yyyy] テキストの削除
E テキストの末尾からインサートモードへ
Gxxxx,yyyy,zzzz xxxx行からyyyy行までをzzzz行の後ろに移動
H コマンドリストを表示
Ixxxx テキストの入力(追加)、カラ行でコマンドに戻る
L[xxxx] テキスト表示
Mxxxx xxxx行を削除し、その場所に入力
P プリンタ ON/OFF 切り替え
Q"string" ポインタ行より文字列をサーチし、見つかったらポインタをその行に移動
R システム・リポート
S テキスト・クリア
T アセンブル時のリスト表示 ON/OFF 切り替え
U ポインタを0(先頭)に
Www,hh 画面サイズ指定。ww=80/40, hh=25/20
X クロスリファレンス出力
制限事項:
Lコマンドでテキスト表示した後のみ、スクリーンエディット可能。
ポインタが使えるコマンドは L, Q, U のみ。
以下はV1.0と同じ制限:
ANDCC は ANDC と記述。
,PCR は ,PC と記述。
ラベル間の演算は足し算のみ。(-でも+演算される。)
エディタ・アセンブラ V2.0 メモリマップ
0 -+-------------------------------------+
| F-BASIC ワークエリア |
xxx -+-------------------------------------+
| 空き |
1000 -+-------------------------------------+
| テキストエリア | テキストファイルは、F-BASICまたは
| ↓ ↓ | その他のモニタプログラムに戻り、
| | LOADM, SAVEM等で管理する必要がある。
| | (富士通版アセンブラとは非互換)
4000 -+-------------------------------------+
| |
| EDASM本体 |
| |
5C00 -+-------------------------------------+
| ラベル・テーブル |
| ↓ ↓ |
| |
| ↑ ↑ |
| システム・スタック |
(71D5)-+-------------------------------------+
| (DISK BASIC) |
8000 -+-------------------------------------+
| | F-BASIC ROMは、BIOSのみ使用。
| F-BASIC ROM | (BIOS さえあれば裏RAM動作可)
| |
| |
FC00 -+-------------------------------------+
| I/O、BOOT ROM他 |
FFFF -+-------------------------------------+
参考文献
I/O別冊 FM-8活用研究 1982年7月20日 (工学社)
I/O別冊 FM-7/8活用研究 1983年7月25日 (工学社)
I/O別冊 FM-7/11活用研究 1984年4月10日 (工学社)
I/O別冊 FM-7/11活用研究[第2集] 1985年3月15日 (工学社)
8.2 Kコンパイラ(拡張Kコンパイラ、K言語、IODOS9)
●
アセンブラの次に登場するのは、津田伸秀さんによるこのK言語を置いて他に無いと言えましょう。
I/O誌では「拡張」Kコンパイラと敢えて呼んでましたが、一般には Kコンパイラ で通用しました。
(拡張でない Kコンパイラ はほとんど流通してないと思われます。)
I/O誌やPiO誌に数多くのソフトウェア、特にゲームが投稿され、一世を風靡してました。
また、FM-7/11活用研究に Kコンパイラ実行環境として IODOS9 が掲載されていました。
(詳細は
コチラ
を参照願います。)
K言語・コンパイラ関連についてはせりんの知る限りの情報を下記にまとめておきましたが、モレもあると思います。
ご存じの方はぜひお知らせください。
・概要
IF-THEN-ELSE、REPEAT-UNTIL、WHILE-WEND といった構造化構文を持つ一方で、
CODE文で機械語を直接埋め込むような小回りも効く、軽量なコンパイラ言語。
当初は 6809マシン(FM-8/7、BM-L3、MB-S1)でのみ動作したが、その後 Z80マシン
(PC-8801)や8086マシン(PC-9801、FM16β)にも移植されている。
・コンパイル処理:1 PASS
オンメモリ ファイル
ソース入力 ○ ○
オブジェクト出力 ○ ×
(6809版では)オブジェクトコードはリロケータブル。ただしランタイムの位置は
コンパイル時に固定される。
・まずはおさらいです。
石井 正秀氏による分類(出展:I/O 1988年2月号)がわかりやすいです。
|
オンメモリ版 |
ファイル版 |
|
|
略号 |
掲載誌 |
適用機種 |
略号 |
適用機種 |
略号 |
備考 |
Kコンパイラ |
- |
I/O 1982年3月号 |
FM-8 |
- |
- |
- |
オリジナル版(はせりん追記) |
拡張Kコンパイラ |
K1 |
FM-8活用研究 (1982年7月) |
FM-8 |
M1 |
FM-8 |
F1 |
V1.3(RT=V1.3、KC=V1.2) |
拡張Kコンパイラ |
K2 |
I/O 1983年3月号 |
FM-7/8 |
M2 |
- |
- |
K1に対するパッチ |
拡張Kコンパイラ |
K3 |
FM-7/8活用研究 (1983年7月) |
FM-7/8 |
M3 |
FM-8 |
F3 |
V1.3改? |
拡張Kコンパイラ |
K4 |
I/O 1983年11月号 |
- |
- |
FM-7 |
F4 |
K3に対するパッチ |
拡張Kコンパイラ |
K5 |
FM-7/11活用研究 (1984年4月) |
FM-7/8 |
M5 |
FM-7/11 |
F5 |
V3.6(最終版) |
上記は、雑誌・書籍に掲載された FM-7/8用Kコンパイラ本体 の一覧です。
市販版(カセットサービス、DISKサービス)は、上記の K1〜K5 以外のものも存在するようです。
存在が確認されているもの、存在すると思われるもの:
V1.1 FM-8活用研究 にて、バグ修正情報掲載あり
V1.2 FM-8活用研究 にて、V1.3 との違いは RT だけであると記載あり
V2.0 maruan さんがお持ちの TAPE版のパッケージ付属のマニュアルに記載あり
V3.3 maruan さんが実物をお持ち。FM-7/11活用研究 にて、コンパイル画面のハードコピー掲載あり
(BM-L3用には V2.3 というのもあり、これは下記に出てきます。)
下記の表では掲載時の作者名をそのまま記載してますので、"COMPAC T"="COMPAC Td"="津田伸秀さん" です。
市販のもの |
|
|
|
|
提供元 |
型格 |
発売年月 |
品名 |
価格 |
機種 |
メディア |
備考 |
カセットサービス |
|
|
|
|
コムパック |
325 |
1982年4月頃 |
Kコンパイラ |
5,000 |
BM-L3 |
TAPE |
後に\4,500に値下げ |
コムパック |
397 |
1982年4月頃 |
Kコンパイラ |
5,000 |
FM-8 |
TAPE |
後に\4,500に値下げ |
ブック型パッケージ(マニュアル付) |
|
|
|
|
コムパック |
813 |
1983年4月 |
拡張Kコンパイラ |
4,500 |
FM-7/8 |
TAPE |
V2.0〜3.6(青箱) |
コムパック |
CE-D006 |
1984年5月 |
拡張Kコンパイラ |
5,800 |
FM-7/8/11 |
5inch 2D |
V3.6、1984年8月以降、\6,800 |
Wonder Soft |
FGD-01 |
1984年6月 |
IODOS9 |
9,800 |
FM-7 |
5inch 2D |
A5版ブックタイプ |
エキスパートサービス (マニュアル無し) |
|
|
|
|
コムパック |
WN-006T |
1985年4月 |
K86コンパイラ |
5,000 |
PC-9801/E/F |
5inch 2D |
|
コムパック |
WF-032T |
1985年5月 |
K86コンパイラ |
5,000 |
FM16β |
5inch 2HD |
|
コムパック |
WH-049T |
1985年9月 |
拡張Kコンパイラ(要拡張RAM) |
5,000 |
MB-S1 10/20 |
5inch 2D |
V3.6 |
コムパック |
WH-050T |
1985年9月 |
拡張Kコンパイラ(要拡張RAM) |
5,000 |
MB-S1 30/40 |
5inch 2HD |
V3.6 |
コムパック |
WN-064T |
1986年11月 |
K80コンパイラ |
5,000 |
CP/M-80 |
5inch 2D |
PC80/88シリーズ、X1シリーズ、FM-8/7シリーズ |
EXシリーズ (ビニールケース、マニュアル付き) |
|
|
|
|
Wonder Soft |
WN-006E |
1985年8月 |
K86コンパイラ |
9,800 |
PC-9801/E/F |
5inch 2D |
|
Wonder Soft |
WN-026E |
1985年8月 |
K86コンパイラ |
9,800 |
PC-9801M |
5inch 2HD |
|
|
|
|
|
|
|
|
|
|
|
雑誌・書籍掲載のもの |
|
|
|
(↓Kコンパイラ本体のソース/ダンプ/パッチ) |
出版元 |
掲載誌・書 |
発行年月 |
タイトル |
掲載ページ |
機種 |
作者・開発元 |
ソース |
ダンプ |
パッチ |
言語 仕様 |
備考 |
工学社 |
I/O |
1982年3月 |
Kコンパイラ |
225 |
FM-8/BM-L3 |
COMPAC T & S |
|
○ |
|
○ |
(オリジナル言語仕様) |
|
I/O |
1982年5月 |
拡張Kコンパイラ使用記 |
332 |
FM-8 |
COMPAC S |
|
|
|
|
リスト掲載なし |
|
I/O |
1982年6月 |
Kコンパイラ レポート |
230 |
BM-L3 |
西川公子命氏 |
|
|
|
|
リスト掲載なし |
|
I/O |
1982年11月 |
独立モニタ(KコンパイラをオールRAMで使う) |
314 |
FM-8 |
野尻 修氏 |
|
|
○ |
|
|
|
I/O |
1983年3月 |
拡張Kコンパイラ |
307 |
FM-7/8 |
COMPAC S |
|
|
○ |
|
|
|
I/O |
1983年4月 |
Kコンパイラグラフィックサブルーチン |
174 |
FM-7/8 |
コンピ氏 |
|
|
|
|
|
|
I/O |
1983年10月 |
Kコンパイラ三角関数サブルーチン |
318 |
FM-7/8 |
渡辺 誠太郎氏 |
|
|
|
|
|
|
I/O |
1983年11月 |
Kコンパイラファイル版 |
196 |
FM-7 |
COMPAC S |
|
|
○ |
|
|
|
I/O |
1984年12月 |
K86コンパイラ |
337 |
PC-9801 |
吉田 美幸氏 |
|
○ |
|
○ |
|
|
I/O |
1984年12月 |
拡張Kコンパイラ V2.3 全ソースリスト |
350 |
BM-L3 |
春夏秋冬氏 |
○ |
○ |
|
△ |
言語仕様は差分のみ |
|
I/O |
1984年12月 |
Kコンパイラ用便利なエグゼキュータ |
284 |
FM-7 |
桑畑 哲氏 |
|
|
|
|
|
|
I/O |
1985年1月 |
Kコンパイラ Ver3.6 |
361 |
MB-S1/BM-L3 |
清水 宏一氏 |
|
○ |
|
|
|
|
I/O |
1985年2月 |
IODOS9ユーティリティ |
303 |
FM-7 |
Wonder Soft Sgn |
|
|
|
|
BATCH, DBASIC, FBASIC, FSEDIT, KEY |
|
I/O |
1985年3月 |
KコンパイラのDISK BASIC用への変更 |
231 |
FM-8 |
大村 浩氏 |
|
|
○ |
|
F-BASIC V2.0 対応 |
|
I/O |
1985年3月 |
Kコンパイラ・ファイル版の改良 |
287 |
FM-7 |
高橋 良志氏 |
|
|
○ |
|
V3.6 の無駄スクロールを停止 |
|
I/O |
1985年4月 |
FM Kコンパイラにスクロール命令を |
323 |
FM-7/8 |
HYO氏 |
|
|
|
|
|
|
I/O |
1985年5月 |
K86コンパイラon CP/M-86 |
196 |
FM16β |
エンジンルームA.M.氏 |
|
○ |
|
|
|
|
I/O |
1985年6月 |
L3用KコンパイラV3.6の変更 |
286 |
BM-L3 |
MB-S1/40氏 |
|
|
|
|
|
|
I/O |
1985年7月 |
IODOS9ユーティリティ |
279 |
FM-7 |
TAKO氏 |
|
|
|
|
|
|
I/O |
1985年7月 |
Kコンパイラで割り込みとファイル入出力を |
265 |
FM-7/8 |
柏木 順二氏 |
|
|
|
|
|
|
I/O |
1985年8月 |
IODOS9用LISTコマンド |
292 |
FM-7 |
竹前 正弘氏 |
|
|
|
|
|
|
I/O |
1985年9月 |
IODOS9ユーティリティ KF, MFILE |
265 |
FM-7 |
エンジンルームO & Sgn |
|
|
|
|
|
|
I/O |
1985年10月 |
Kコンバータ |
273 |
FM-7/8 |
宮崎 潔氏 |
|
|
|
|
|
|
I/O |
1985年10月 |
K80コンパイラ |
321 |
PC-8801 |
エンジンルームH.O.&K.Y.氏 |
|
○ |
|
○ |
|
|
I/O |
1986年2月 |
IODOS9ユーティリティ F-BASICで読めるフォーマットを |
270 |
FM-7 |
Hiroshi & Azuki氏 |
|
|
|
|
|
|
I/O |
1986年2月 |
K86 SUBの高速化 |
317 |
PC-9801 |
旭井 洋一郎氏 |
|
|
|
|
|
|
I/O |
1986年4月 |
IODOS9ダンプリスト打ち込みツール |
194 |
FM-7 |
長谷 勇治氏 |
|
|
|
|
|
|
I/O |
1986年7月 |
ロングソースKコンパイラ |
234 |
FM-7 |
桑畑 哲氏 |
|
|
|
|
|
|
I/O |
1986年7月 |
IODOS9 FSEDIT用ファイル版Kコンパイラ |
278 |
FM-7 |
竹前 正弘氏 |
|
|
|
|
|
|
I/O |
1986年8月 |
IODOS9 FILE日付を記録 |
223 |
FM-7 |
竹前 正弘氏 |
|
|
|
|
|
|
I/O |
1986年10月 |
K80コンパイラ |
222 |
CP/M-80 |
元議長氏 |
|
○ |
|
|
|
|
I/O |
1988年2月 |
逆Kコンパイラ&リロケータ |
155 |
FM-7 |
石井 正秀氏 |
|
|
|
|
|
|
I/O |
1988年3月 |
Kコンパイラリロケートユーティリティ |
|
|
石井 正秀氏 |
|
|
|
|
|
工学社 |
FM-8活用研究 |
1982年7月20日 |
拡張版Kコンパイラ(V1.3) |
14 |
FM-8 |
COMPAC T & S |
|
○ |
|
○ |
|
工学社 |
FM-7/8活用研究 |
1983年7月25日 |
拡張Kコンパイラ |
126 |
FM-7/8 |
COMPAC T & S & N |
|
○ |
|
○ |
V1.x(?) |
Kコンパイラ用グラフィック・サブルーチン |
134 |
FM-7/8 |
コンピ氏 |
|
|
|
|
|
Kコンパイラ用グラフィック・サブルーチン 追加版 |
136 |
FM-7/8 |
茶谷 公之氏 |
|
|
|
|
|
工学社 |
FM-7/11活用研究 |
1984年4月10日 |
拡張Kコンパイラ V3.6 |
81 |
FM-7/11 |
COMPAC Td & St & Sgn |
|
○ |
|
○ |
|
IODOS9 |
93 |
FM-7 |
Wonder Soft Sgn |
|
|
○ |
|
ハイメモリ版ランタイム、KDコンパイラ |
Kコンパイラ有象無象 |
105 |
|
COMPAC S |
|
|
|
|
|
Kコンパイラで文字変数を使う |
108 |
|
石井 正秀氏 |
|
|
|
|
|
Kコンパイラ用三角関数サブルーチン |
178 |
FM-7/11 |
渡辺 誠太郎氏 |
|
|
|
|
|
工学社 |
FM-7/11活用研究[第2集] |
1985年3月15日 |
Kコンパイラ用便利なエグゼキュータ |
184 |
FM-7 |
桑畑 哲氏 |
|
|
|
|
|
IODOS9を使い易く! |
185 |
FM-7 |
竹前 正弘氏 |
|
|
|
|
|
工学社 |
S1活用研究 |
1985年10月25日 |
Kコンパイラ Ver3.6 |
274 |
MB-S1 |
清水 宏一氏 |
|
○ |
|
|
(BM-L3用パッチは掲載なし) |
Kコンパイラの使い方 |
281 |
|
(編) |
|
|
|
○ |
|
★最終版の、FM-7/11活用研究に掲載された V3.6 です。
・FM-7/11活用研究の記事中のファイル一覧です。
・記事中にファイル名指定のないものは、はせりんが勝手に命名しています。
・RT、K はオンメモリコンパイル用で、 FM-7シリーズ(F-BASIC V3.0)と FM-8 で共通に使えます。
・RTF、KF はファイル版コンパイル用で、 FM-7シリーズ(F-BASIC V3.0)用ですが、パッチを当てることで他の機種でも使えます。
・RELOC.K、EXEC.K はFM-7で裏RAMを使ったコンパイル時に使用します。
・MAIN は、ファイル版でコンパイルする時に使用します。
・MAIN2 は、上記にパッチをいくつか当てたものです。(詳細は後述)
・SAMPLE.K はサンプルプログラム、SAMPLE.B はそれを F-BASIC で書き直したものです。
・SAMPLE.K の中味です。
・この例はで予約語を小文字で書いてます。大文字小文字はどちらでも良いようです。
・SAMPLE.B です。
・上記 SAMPLE.K と同じ動きをします。
・まずはオンメモリ版でサンプルプログラムをコンパイルしてみます。
・機種:FM-8、FM-7/NEW7/77、FM77AVシリーズ
・対応F-BASIC:V1.0、V2.0、V3.0
・プログラム:RT、K
・オンメモリ版では、Kコンパイラ本体が $2000〜 に居座っているため、
あまり大きなソースをコンパイルすることができません。
・実行してみます。あっという間に実行完了します。
・あまりに速いので 10回繰り返して実行したところ 5.4sec でした。
対する SAMPLE.B の方は 2.8sec でしたので、Kコンパイラの方が 5.2倍高速、という結果でした。
Kコンパイラ オンメモリ版メモリマップ
0 -+-------------------------------------+
| F-BASIC ワークエリア |
xxx -+-------------------------------------+
| |
| ソース・プログラム |
| |
-+-------------------------------------+
| 変数領域、文字領域、スタック |
2000 -+-------------------------------------+
| |
| Kコンパイラ本体 |
| (リロケータブル) |
| |
41FF -+-------------------------------------+
| |
4300 -+-------------------------------------+
| Kコンパイラ・シンボルテーブル |
4B00 -+-------------------------------------+
| Kコンパイラ・作業用エリア |
4C00 -+-------------------------------------+
| 実行時ワークエリア |
4D00 -+-------------------------------------+
| ランタイム・ルーチン |
5000 -+-------------------------------------+
| |
| オブジェクト・コード |
| (リロケータブル) |
| |
71D5 -+-------------------------------------+
| DISK BASIC |
8000 -+-------------------------------------+
| |
| F-BASIC ROM |
| |
| |
FC00 -+-------------------------------------+
| I/O、BOOT ROM他 |
FFFF -+-------------------------------------+
・続いて、オンメモリ版の裏RAMコンパイルを試してしてみましょう。
・機種:FM-7/NEW7/77、FM77AVシリーズ
・対応F-BASIC:V3.0
・プログラム:RT、K、RELOC.K、EXEC.K
・事前準備として、Kコンパイラ本体を裏RAMへ転送します。$C000 は転送先の例です。
・次に、EXEC.K(裏RAMエグゼキュータ)をコンパイルだけしておきます。
・その後、CLEAR文 で使用メモリを拡大した後、ソースファイルを読み込ませます。
単に裏RAMへ移すだけなので、コンパイラの使うワークエリアは元のアドレスに残ったままです。
・Kコンパイラの呼び出し方法が通常版とは異なり、先ほど事前にコンパイルしておいたエグゼキュータで呼び出します。
アドレスを2回指定するので面倒ですね。
・無事コンパイルできました。
・オブジェクトコードは通常版と同じで $5000〜 に格納されます。
・問題なく実行できました。
・裏RAMコンパイルは、このように非常に手間のかかるものです。
リロケータやエグゼキュータを事前にコンパイルしておいて、
例えばオブジェクトコード領域の後ろの方に置いておけば多少は楽になりますが、
カセットベースでは大変だったと思います。
Kコンパイラ オンメモリ版裏RAM使用時 メモリマップ
0 -+-------------------------------------+
| F-BASIC ワークエリア |
xxx -+-------------------------------------+
| |
| ソース・プログラム |
| |
-+-------------------------------------+
| 変数領域、文字領域、スタック |
41FF -+-------------------------------------+
| |
4300 -+-------------------------------------+
| Kコンパイラ・シンボルテーブル |
4B00 -+-------------------------------------+
| Kコンパイラ・作業用エリア |
4C00 -+-------------------------------------+
| 実行時ワークエリア |
4D00 -+-------------------------------------+
| ランタイム・ルーチン |
5000 -+-------------------------------------+
| |
| オブジェクト・コード |
| (リロケータブル) |
| |
71D5 -+-------------------------------------+
| DISK BASIC |
8000 -+-------------------------------------+ 8000 -+-------------------------------------+
| | | |
| F-BASIC ROM | | |
| | C000 -+-------------------------------------+
| | | |
| | | Kコンパイラ本体 |
| | | (リロケート後) |
| | | |
| | E1FF -+-------------------------------------+
| | | |
FC00 -+-------------------------------------+ FC00 -+-------------------------------------+
| I/O、BOOT ROM他 |
FFFF -+-------------------------------------+
・最後にファイル版でのコンパイル&実行です。
・その前に MAIN2 の追加部分を解説しておきます。55行と、140行以降を追加しています。(黄色着色部分)
・230行、240行は、I/O誌1988年2月号 P.155 掲載の石井正秀氏によるパッチ情報です。280行は、by はせりん です。
・V3.6のファイル版はコンパイル時に画面が無駄にスクロールアップするのですが、230行でそれを止めてます。
これは恐らく市販版では修正されていると思われます。(リストの掲載漏れのようなので)
・240行、280行で、FM-8 の F-BASIC V1.0/V2.0 に対応しています。
・それでは、ファイル版でコンパイルしてみましょう。
・機種:FM-8、FM-7/NEW7/77、FM77AVシリーズ
・対応F-BASIC:V1.0、V2.0、V3.0
・プログラム:RTF、KF、MAIN2
・問題なく実行できました。
・メモリマップはオンメモリ版とほぼ同じですので省略します。
★maruanさん秘蔵の、パッケージ版Kコンパイラ(V3.3)です。
・まずは外観です。
・よく姪botちゃんが紹介してるやつです。
・maruanさんにTAPEの中味を表示してもらいました。
・何と、RT と K の2つしか入ってない!
・RTF、KF は自分でパッチあてろ、と付属マニュアルに書いてあるそうです...orz
・maruanさんにコンパイルを実行してもらいました。
・Version 3.3 という表示が出てます。
・付属マニュアルには、V2.0 に関する記載もあるそうです。
参考文献
I/O別冊 FM-8活用研究 1982年7月20日 (工学社)
I/O別冊 FM-7/8活用研究 1983年7月25日 (工学社)
I/O別冊 FM-7/11活用研究 1984年4月10日 (工学社)
I/O別冊 FM-7/11活用研究[第2集] 1985年3月15日 (工学社)
8.2.1 SYS-9コンパイラ
●
SYS-9というのは、元々は津田伸秀さんによるApple II+6809(TOMATO-9等)のシステム向けの
統合開発環境だったそうですが、そのサブセット版がFM-8用として提供されていました。
(ディスクBASIC版と、FLEX版)
・概要
Kコンパイラ作者の津田伸秀さん自身による、Kコンパイラの進化版。
IF-THEN-ELSE、REPEAT-UNTIL、WHILE-WEND といった構造化構文を持つ一方で、
CODE文で機械語を直接埋め込むような小回りも効く、軽量なコンパイラ言語。
F-BASIC用ディスク版の他に、FLEX版も存在するとのこと。
オンメモリコンパイルを意識したKコンパイラと比較し、メモリマップも改良されており、
ランタイムとオブジェクトは連結した状態でリロケータブル。
・掲載誌はKコンパイラと異なり月刊マイコン誌、ソフトウェアの発売はアスターインターナショナル。
Kコンパイラ(\4,500〜\6,800)と比較し \29,800 と若干高めの設定。
・武市好浩さん作のゲーム、LOLITA II 及び FINAL LOLITA が、SYS-9を用いて開発されたとされている。
・コンパイル処理:1 PASS
F-BASICディスク版 FLEX版
ソース入力 ファイル ファイル
オブジェクト出力 オンメモリ ファイル
市販のもの |
|
|
|
|
提供元 |
型格 |
発売年月 |
品名 |
価格 |
機種 |
メディア |
備考 |
アスターインターナショナル |
|
1983年2月頃 |
SYS-9コンパイラ |
29,800 |
FM-8 |
5inch 2D |
(F-BASIC用ディスク版) |
|
|
|
|
|
雑誌・書籍掲載のもの |
|
|
|
(↓SYS-9コンパイラ本体のソース/ダンプ/パッチ) |
出版元 |
掲載誌・書 |
発行年月 |
タイトル |
掲載ページ |
機種 |
作者・開発元 |
ソース |
ダンプ |
パッチ |
言語 仕様 |
備考 |
電波新聞社 |
マイコン |
1982年12月 |
高速言語SYS-9 |
380 |
FM-8 |
津田伸秀氏 |
|
|
|
|
|
電波新聞社 |
マイコン |
1983年1月 |
高速言語SYS-9 |
387 |
FM-8 |
津田伸秀氏 |
|
|
|
○ |
|
電波新聞社 |
マイコン |
1983年2月 |
高速言語SYS-9 |
393 |
FM-8 |
津田伸秀氏 |
|
○ |
|
|
|
電波新聞社 |
マイコン |
1983年3月 |
高速言語SYS-9 |
401 |
FM-8 |
津田伸秀氏 |
|
|
|
|
|
・マイコン誌掲載版(version 3.0)を打ち込んでみました。
・SYS9 がコンパイラ本体です。
・com は F-BASIC で書かれたコンパイラドライバです。複数ファイルを連続してコンパイル可能です。
・hilbert は、ヒルベルト曲線を描画するデモプログラムです。グラフィックライブラリも含まれています。
ソースコードは、ASCII形式で格納しておきます。
・さっそくコンパイルしてみます。
・オブジェクトコードは、$1300 から格納されます。
コンパイラドライバにより、PF5 に EXEC &H1300 が登録されるので、ボタン一発で実行します。
・画面に表示されるオブジェクトコードのサイズは、$300バイトのランタイムを含んでいます。
したがって、オブジェクトを SAVE する際には、
SAVEM"ファイル名",&H1000,&H1000+オブジェクトサイズ,&H1300
とします。
・実行結果です。
・I/O別冊FM-8活用研究に掲載されていた、Shierpinski曲線のKコンパイラソースをコンパイルしてみました。
・Kコンパイラソースはそのまま喰えるようです。
・これはエラーを取り切った後の状態なのでノーエラーですが、INPUT文に違いがあるようでした。詳細調査中。
・実行結果です。
SYS-9コンパイラ メモリマップ
コンパイル前 コンパイル後
$0000-+--------------------+
|ワーク |
TEXT TOP-+--------------------+
|com |
|(コンパイラドライバ)|
-+--------------------+
|スタックエリア |
$1000-+--------------------+ - +------------------+
|SYS-9ランタイム | |SYS-9ランタイム |
|(リロケータブル) | |(リロケータブル) |
$1300-+--------------------+ - +------------------+
| | | |
|SYS-9コンパイラ | |オブジェクトコード|
|(リロケータブル) | |(リロケータブル) |
$3Cxx-+--------------------+ | |
| | | |
|シンボルテーブル | - +------------------+
|オブジェクトコード |
|(テンポラリ) |
| |
$6E00-+--------------------+
|コンパイラ・ワーク |
$6F00-+--------------------+
|空き |
$71D5-+--------------------+
|(DISK-BASIC) |
$8000-+--------------------+
|BASIC ROM |
| |
| |
$FC00-+--------------------+
|I/Oなど |
$FFFF-+--------------------+
・これまで紹介してきたSYS-9はFM-8(F-BASIC V1.0x)用ですが、簡単な変更でFM-7(F-BASIC V3.0x)で動かすことができました。
コンパイラドライバ com に対して3行追加して(黄色着色部分)、ランタイムにパッチを当てています。
アドレス | FM-8 | FM-7 | 備考 |
$100B | $D336 | $D072 | 1文字入力 |
$1026 | $D352 | $D08E | 1文字出力 |
$103C | $DA50 | $D807 | 1行入力 |
・この様子だと、同じマイクロソフトBASICを使っている BM-L3 や MB-S1 でも動かせそうです。
(グラフィックライブラリは別途作成必要ですが...)
・上記のパッチを当てた即席のFM-7用SYS-9コンパイラでコンパイルしてみた様子です。
スクリーンショットは省略しますが、オブジェクトも問題なく実行できています。
・あといじれそうなところは、コンパイラワークエリアの末尾番地(=空きエリア開始番地)です。($1303)
$7000 に設定したところ、問題なくコンパイルできました。
URA-DOS等で表RAMを限界まで使える場合は、$7F00 まで行けると思います。
参考文献
月刊マイコン 1982年12月号(電波新聞社)
月刊マイコン 1983年1月号(電波新聞社)
月刊マイコン 1983年2月号(電波新聞社)
月刊マイコン 1983年3月号(電波新聞社)
8.3 GAMEインタプリタ、コンパイラ
●
続いては、大西博さんが開発された GAME言語と、大西さん他多数の方が開発されたその処理系(インタプリタ、コンパイラ)です。
GAME とは General Algorithic Micro Expressions の略だそうで、Tyny-BASIC系の記号化言語です。
1980年±2年頃にパソコンいじった人は、いちどはお世話になってると思います。
オリジナルは大西さんによる6800(汎用)版のインタプリタですが、その後 8080版とそれ用のコンパイラが開発され、
その後続々と当時のメジャーなパソコンにはほとんど移植され、アスキー誌で一世を風靡してました。
ところが、FM-7/8シリーズ用は発表されたのが1984年と若干旬を過ぎた頃でした(TL/1 for FM-7/8が先に発表された)ので、
印象がちょっと薄いかもしれません。
GAME言語とその処理系については他の方が詳しく解説されているので、下記ははせりんの
興味のあるところに限定してまとめてあります。
・概要
Tyny-BASIC系の記号化言語。データタイプは 8bit/16bit整数のみ。テキストエディタ内蔵。
大西さんが掲げておられたGAMEの特長:
1) 機能は通常のTiny BASIC以上
2) メモリー効率が極めて良い
3) 速い
4) 機械語的な仕事が容易
・GAME-FMコンパイル処理:2 PASS
オンメモリ ファイル
ソース入力 ○ ○
オブジェクト出力 ○ ○
・GAMEは月刊アスキー誌やテープアスキー等で提供されていました。下記の表はその一部です。
TAPE-ASCII/月刊テープアスキー |
|
|
|
|
提供元 |
型格 |
発売年月 |
品名 |
価格 |
機種 |
メディア |
内容 |
アスキー |
- |
1980年6月 |
TL/1 |
4,000 |
H68/TR |
TAPE |
TL/1-6800, GAME III |
アスキー |
SP-0001 |
1980年10月 |
GAME-PC |
4,000 |
PC-8001 |
TAPE |
GAME-PCインタプリタ、コンパイラ |
アスキー |
- |
1984年9月 |
月刊テープアスキー1984年9月号 |
3,000 |
FM-7/8/11 |
TAPE |
GAME-FMインタプリタ、コンパイラ V3.0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
雑誌・書籍掲載記事(の一部) |
|
|
|
|
出版元 |
掲載誌・書 |
発行年月 |
タイトル |
掲載ページ |
機種 |
作者・開発元 |
ソース |
ダンプ |
パッチ |
備考 |
アスキー |
アスキー |
1978年7月 |
GAME マイコンのための新しい言語 |
66 |
6800 |
大西 博氏 |
|
○ |
|
|
|
アスキー |
1978年8月 |
GAME インタプリタの研究 |
42 |
6800 |
大西 博氏 |
○ |
|
|
前半 |
|
アスキー |
1978年9月 |
GAME 行編集機能とディスコンパイラ |
68 |
6800 |
大西 博氏 |
|
|
○ |
|
|
アスキー |
1978年10月 |
GAME 6800用セルフアセンブラ |
66 |
6800 |
大西 博氏 |
○ |
|
|
後半 |
|
アスキー |
1978年11月 |
GAME68 |
62 |
H68/TR+H68/TV |
池田 弘人氏 |
|
○ |
|
|
|
アスキー |
1979年1月 |
GAME80インタプリタ |
38 |
TK-80BS |
高岡 洋一氏 |
|
○ |
|
|
|
アスキー |
1979年1月 |
GAMEの拡張 リストの強化、ストリングの入出力 |
61 |
6800 |
下野 武志氏 |
|
|
○ |
|
|
アスキー |
1979年4月 |
GAME-Z80 |
40 |
TRS-80 |
沢田 昌宏氏 |
|
○ |
|
|
|
アスキー |
1979年7月 |
GAME80コンパイラ |
26 |
TK-80BS |
中島 聡氏 |
○ |
|
|
|
|
アスキー |
1979年8月 |
GAME68用ユーティリティプログラム |
71 |
6800 |
摂田 寛二氏 |
○ |
|
|
|
|
アスキー |
1979年10月 |
GAME65 |
24 |
PET |
鈴木 仁志氏 |
|
○ |
|
|
|
アスキー |
1979年10月 |
GAME-MZインタプリタ |
30 |
MZ-80K/C |
間宮 信義氏 |
|
○ |
|
|
|
アスキー |
1979年10月 |
GAME-MZコンパイラ |
34 |
MZ-80K/C |
間宮 信義氏 |
○ |
|
|
|
|
アスキー |
1980年2月 |
GAME-APPLE |
68 |
APPLE ][ |
鈴木 直哉氏 |
|
○ |
|
|
|
アスキー |
1980年4月 |
GAME-APPLEコンパイラ |
86 |
APPLE ][ |
力武 健次氏 |
○ |
|
|
|
|
アスキー |
1980年5月 |
GAME-APPLE DOSサポート |
196 |
APPLE ][ |
鈴木 直哉氏 |
|
|
○ |
|
|
アスキー |
1980年6月 |
GAME-APPLE Plus対応 |
79 |
APPLE ][plus |
榊 ひかる氏 |
|
|
○ |
|
|
アスキー |
1980年9月 |
GAME-PCインタプリタ |
75 |
PC-8001 |
高橋 敏昭氏 |
|
○ |
|
|
|
アスキー |
1980年10月 |
GAME-PCコンパイラ |
142 |
PC-8001 |
高橋 敏昭氏 |
|
○ |
|
|
|
アスキー |
1981年5月 |
GAME68コンパイラ |
149 |
H68/TR |
高井 義明氏 |
○ |
|
|
|
|
アスキー |
1981年6月 |
GAME入門 |
87 |
|
松田 充弘氏 |
|
|
|
|
|
アスキー |
1981年6月 |
GAME09インタプリタ |
90 |
6809(Generic) |
藤原 誠氏 |
|
○ |
|
|
|
アスキー |
1981年6月 |
GAME-L3インタプリタ |
94 |
BM-L3 |
秋山 秀樹氏、 大野 俊治氏 |
|
○ |
|
|
|
アスキー |
1983年6月 |
GAME-SMC |
95 |
SMC-70 |
鈴木 直哉氏 |
|
○ |
|
|
|
アスキー |
1984年9月 |
GAME-FMインタプリタ、コンパイラ V3.0 |
205 |
FM-7/8/11 |
萩平 哲氏 |
|
○ |
|
|
NEW ON |
HILDA |
1982年?月 |
GAME-L3インタプリタ V2.1 |
|
BM-L3 |
萩平 哲氏 |
|
|
|
TAPEのみ |
|
HILDA |
1982年?月 |
GAME-L3コンパイラ V2.4 |
|
BM-L3 |
萩平 哲氏 |
|
○ |
|
|
★アスキー誌1984年9月号の記事を元に、はせりんが構成した GAME-FM のセットです。
・ファイル名については、記事の指定通りです。
・記事掲載のダンプリストは FM-7/77(F-BASIC V3.0)用ですが、FM-8(F-BASIC V1.0)やFM-11(F-BASIC V4.0)で使用可能となるパッチも掲載されています。
・FILES で表示されたサンプルプログラム(Sample1〜7)のファイルタイプが 4 であることに注目してください。
GAME-FMインタプリタの \SV コマンドでセーブしたテキストは、このファイルタイプになります。
F-BASIC上で間違ってロードしないための対策と思われます。
・それでは、まず GAME-FMインタプリタ を起動してみましょう。
・事前に、CLEAR命令でメモリ領域を確保します。
$1200 からテキストが入るのは、MZ-80K/C由来でしょうか?
・無事起動できました。
・\FL コマンドで、ファイルリストを表示してみます。
F-BASIC の FILES と全く同じ表示になります。
GAME-FMインタプリタ/コンパイラ V3.0 メモリマップ (FM-7/8の場合)
$0000-+------------------+
|ワーク |
$1200-+------------------+ - - - -
|テキストエリア | A A
| ↓ | | |
| ↑ | | |オブジェクトコード
|ユーザー・スタック| | |エリア
$2F00-+------------------+ | |(外部コンパイルの場合は
|ワーク | | |$6FFFまで可能)
$3000-+------------------+ | |
|ランタイムルーチン| | |
$3624-+------------------+ | |
| | | |
($4A00)| - - - - - - - - -| | |
| ローダー | | |
|- - - - - - - - - | | |
| | | V
$4D00-+------------------+ |
|コンパイラワーク | |
$5000-+------------------+ |ソースコードエリア
|GAMEコンパイラ | V
$6000-+------------------+ - - - -
|GAMEインタプリタ |
$7000-+------------------+
|インタプリタワーク|
$7100-+------------------+
|システム・スタック|
$71D5-+------------------+
|DISK-BASIC |
$8000-+------------------+
|BASIC ROM |
| |
$FC00-+------------------+
|I/Oなど |
$FFFF-+------------------+
・続いて、いくつかサンプルプログラムを動かしてみましょう。
・既に打ち込んである Sample3 を \LD コマンドで読み込みます。
これは、GAME-FMインタプリタの内蔵エディタで打ち込んだものです。
・エディタは F-BASIC のそれと同じもので、複数行一括編集が可能です。違和感なく使えると思います。
・0 はリスト表示です。
・画面をキャプチャしてないですが、#=1 で実行します。(インタプリタの場合)
・Sample3 実行結果です。
・プログラム名:Sample3
・タイトル:3-D Sample No.1 from IBM DEMO
・同様に、Sample4 です。
・Sample4 実行結果です。
・プログラム名:Sample4
・タイトル:3-D Sample No.2 from GAME-PC DEMO
・それでは、GAME-FMコンパイラを試してみましょう。
・この例では、GAME-FMインタプリタ起動後に、GAME-FMコンパイラ関連ファイルを読み込んでいますが、F-BASIC上でロードしておいても同じでです。
・>=$5000 でコンパイラを起動します。
(コンパイラ起動前に、対象プログラムを読み込んでおきます。)
・コンパイラが起動した後、会話的に処理を進めていきます。
・Runtimeの位置、オブジェクトコードの格納位置、ソースコードの位置を指定します。(オンメモリコンパイルの場合)
・最後に、>=$3000 で Runtime+オブジェクトコード を起動します。
・Sample5 をコンパイルして得られたオブジェクトの実行結果です。
・プログラム名:Sample5
・タイトル:CIRCLE DEMO
インタプリタとコンパイラで各プログラムの実行時間の比較をしてみました。
プログラムにより違いがありますが、コンパイラの方が6〜35倍も高速な結果となりました。
プログラム名 |
インタプリタ |
コンパイラ |
速度比 |
Sample3 |
38 |
3 |
12.7 |
Sample4 |
1:33 |
8 |
11.6 |
Sample5 |
41 |
7 |
5.9 |
Sample6 |
11:31 |
20 |
34.6 |
参考文献
月刊アスキー 1978年7〜10月号 (アスキー)
月刊アスキー 1984年9月号 (アスキー)
8.4 TL/1コンパイラ
●
続いて、大西博さんによるTL/1コンパイラです。
こちらもアスキー誌で一世を風靡してました。オリジナルは大西さんによる6800版ですが、
PC-8001、MZ-80、Apple II、CBM、TRS、Basic Master Level3、FM-7/8、MSX と数多くの機種に移植
されて活用されていました。
TL/1言語・コンパイラ関連については他の方が詳しく解説されているので、下記ははせりんの
興味のあるところに限定してまとめてあります。
・概要
Algol-Pascal系構造化言語。データタイプは 8bit整数のみ。
特長:1パスコンパイラのため、コンパイルは超高速。オブジェクトコードも高速。
・コンパイル処理:1 PASS
オンメモリ ファイル
ソース入力 ○ ×
オブジェクト出力 ○ ×
(6809版の)オブジェクトコードはリロケータブル。
・TL/1は数多くの機種に移植されてました。その一覧です。
|
掲載誌 |
作者・開発元 |
CPU |
機種 |
エディタ |
IF THEN ELSE |
Graphic拡張 |
備考 |
TL/1 (Original) |
アスキー |
大西 博氏 |
6800 |
H68/TR |
GAME |
× |
× |
|
TL/1-PC |
アスキー |
鈴木 仁志氏 |
Z80 |
PC-8001 |
N-BASIC |
○ |
○(160x100) |
|
TL/1-APPLE |
アスキー |
紀太 章氏 |
6502 |
APPLE II |
簡易エディタ |
× |
× |
|
TL/1-MZ |
アスキー |
鈴木 仁志氏 |
Z80 |
MZ-80 |
内蔵 |
○ |
○(80x50) |
|
TL/1-CBM |
アスキー |
紀太 章氏 |
6502 |
CBM3032 |
内蔵 |
× |
○(80x50) |
|
TL/1-TRS |
アスキー |
梶田 英治氏、難波 克弘氏 |
Z80 |
TRS-80 |
TRS-BASIC |
○ |
○(128x48) |
|
TL/1-L3 |
アスキー |
服部 隆志氏 |
6809 |
BM-L3 |
L3-BASIC |
× |
○(640x200) |
|
TL/1-FM |
アスキー |
秦 純一氏 |
6809 |
FM-7/8 |
F-BASIC |
○ |
○(640x200) |
分割コンパイル可 |
TL/1-MSX |
アスキー |
柴田 文彦氏 |
Z80 |
MSX(TAPE) |
内蔵 |
○ |
○(256x192) |
ファイル入力コンパイル可 |
TL/1-MSXDOS |
アスキー |
柴田 文彦氏 |
Z80 |
MSX+DISK |
内蔵 |
○ |
○(256x192) |
ファイル入力コンパイル可 |
TL/1-CP/M |
- |
? |
Z80 |
(CP/M) |
ED, WM等 |
○ |
? |
ファイル入力コンパイル |
TL/1-88G |
- |
K.C.B. Tさん |
Z80 |
PC-8801 & PC-DOS |
? |
○ |
○(?) |
ファイル入力コンパイル |
・TL/1は月刊アスキー誌やテープアスキー等で提供されていました。下記の表はその一部です。
TAPE-ASCII/月刊テープアスキー |
|
|
|
|
提供元 |
型格 |
発売年月 |
品名 |
価格 |
機種 |
メディア |
内容 |
アスキー |
- |
1980年6月 |
TL/1 |
4,000 |
H68/TR |
TAPE |
TL/1-6800, GAME III |
アスキー |
SP-0002 |
1981年1月 |
TL/1-PC |
4,000 |
PC-8001 |
TAPE |
TL/1-PC (連珠同梱) |
アスキー |
SP-0028 |
1982年10月 |
TL/1-L3 |
4,000 |
BM-L3 |
TAPE |
TL/1-L3 |
アスキー |
- |
1984年4月 |
月刊テープアスキー1984年4月号 |
3,000 |
FM-7/8 |
TAPE |
TL/1-FM (北海道防衛作戦同梱) |
アスキー |
- |
1984年7月 |
月刊テープアスキー1984年7月号 |
3,000 |
MSX |
TAPE |
TL/1-MSX |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
雑誌・書籍掲載記事(の一部) |
|
|
|
|
出版元 |
掲載誌・書 |
発行年月 |
タイトル |
掲載ページ |
機種 |
作者・開発元 |
ソース |
ダンプ |
パッチ |
備考 |
アスキー |
アスキー |
1980年2月 |
TL/1(言語紹介) |
112 |
- |
大西 博氏 |
|
|
|
|
|
アスキー |
1980年6月 |
TL/1 言語の概要 |
82 |
H68/TR |
大西 博氏 |
|
○ |
|
|
|
アスキー |
1980年7月 |
TL/1 ライブラリの登録 |
144 |
H68/TR |
大西 博氏 |
|
|
|
|
|
アスキー |
1980年8月 |
TL/1 コンパイラの作り方 |
143 |
H68/TR |
大西 博氏 |
△ |
|
|
不鮮明のため次号に再掲 |
|
アスキー |
1980年9月 |
(TL/1 ソースリスト) |
153 |
H68/TR |
大西 博氏 |
○ |
|
|
|
|
アスキー |
1980年10月 |
(TL/1 ソースリスト続き) |
154 |
H68/TR |
大西 博氏 |
○ |
|
|
|
|
アスキー |
1980年11月 |
(TL/1 ソースリスト続き) |
152 |
H68/TR |
大西 博氏 |
○ |
|
|
|
|
アスキー |
1981年1月 |
TL/1-PC |
154 |
PC-8001 |
鈴木 仁志氏 |
|
○ |
|
純正のDISK BASICでは動作不可 |
|
アスキー |
1981年1月 |
連珠 (TL/1-PC) |
163 |
PC-8001 |
北裏 二郎氏 |
○ |
|
|
|
|
アスキー |
1981年3月 |
Error Massage (1981年1月号 TL/1-PC) |
47 |
PC-8001 |
- |
|
|
○ |
|
|
アスキー |
1982年10月 |
TL/1-L3 |
192 |
BM-L3 |
服部 隆志氏 |
|
○ |
|
DISK BASICで動作可 |
|
アスキー |
1982年10月 |
TL/1 リファレンスマニュアル |
195 |
- |
前田 成人氏 |
|
|
|
|
|
アスキー |
1982年12月 |
アフターケア (1982年10月号 TL/1-L3) |
71 |
BM-L3 |
- |
|
|
○ |
|
|
アスキー |
1983年10月 |
北海道防衛作戦 (TL/1-L3) |
|
BM-L3 |
|
○ |
○ |
|
|
|
アスキー |
1983年10月 |
北海道防衛作戦 |
|
PC-8001 |
|
|
○ |
|
|
|
アスキー |
1984年4月 |
TL/1-FM |
240 |
FM-7/8 |
秦 純一氏 |
|
○ |
|
|
|
アスキー |
1984年4月 |
北海道防衛作戦 (TL/1-FM) |
250 |
FM-7/8 |
|
△ |
|
|
L3版との差分のみ |
|
アスキー |
1984年5月 |
アフターケア (1984年4月号 TL/1-FM) |
107 |
FM-7/8 |
- |
|
|
○ |
バグ修正1 |
|
アスキー |
1984年6月 |
アフターケア (1984年4月号 TL/1-FM) |
111 |
FM-7/8 |
- |
|
|
○ |
Disk版とカセット版でオブジェクトが非互換な点 |
|
アスキー |
1984年7月 |
アフターケア (1984年4月号 TL/1-FM) |
119 |
FM-7/8 |
- |
|
|
○ |
バグ修正2 |
★アスキー誌1984年4月号の記事を元に、はせりんが構成した TL/1-FM のセットです。
・ファイル名については、ほとんど、はせりんが勝手に命名しています。
・裏RAM使用の有無、機種別で4種類のバイナリ本体と、裏RAMからロードするローダー3種類です。
・TL1LDR は、はせりんが勝手に作ったローダーです。機種判別(実際にはBASIC版数判別)を行って必要なバイナリをロードします。
TL/1-PC のローダーの仕様と合わせて、PF4 でコンパイル、PF5 で実行、としてみました。
・SAMPLE も勝手バージョンです。
・Kコンパイラでは大規模ソースファイル対応でファイル版がリリースされていましたが、
TL/1ではそういうのがありません。TL/1-FMは比較的ソースエリアが狭いのですが、唯一(?)、
「分割コンパイル」がサポートされており、裏RAM使用と合わせてメモリの狭さを凌いでいます。
・TL1LDR の中味です。
・200行、210行が何やら暗号めいてますが、これはファンクションキーの15文字制限に押し込める
ための苦肉の策です。本来やりたかった事は次の通りです
KEY 5,"EXEC &HFC30:EXEC &H3800"+CHR$(13)
KEY 5,"EXEC &HFC00:EXEC &H3800"+CHR$(13)
・F-BASIC V3.0 L2.0(DISK版)では、$FC00〜$FC29辺りを使ってるので、ローダーのアドレスをずらしています。
TL/1-FMコンパイラ メモリマップ
$0000-+------------------+
|ワーク |
TEXT TOP-+------------------+
|ソースエリア |
$4000-+------------------+
|ユーザー・スタック|
|コンパイラワーク |
$4300-+------------------+
|TL/1コンパイラ |
$5390-+------------------+
|変数名テーブル |
|システム・スタック|
$5800-+------------------+
|ランタイムルーチン|
$5C1E-+------------------+
|オブジェクトエリア|
RAM END-+------------------+
|(DISK-BASIC) | 裏RAM使用コンパイル時
$8000-+------------------+ +------------------+
|BASIC ROM | |ランタイムルーチン|
$841E-+ + +------------------+
| | |オブジェクトエリア|
$FC00-+------------------+ +------------------+
|裏RAM制御 |
$FC80-+------------------+
|I/Oなど |
$FFFF-+------------------+
・続いて、コンパイルしてみましょう。
・その前に、コンパイル対象の SAMPLE プログラムです。大した内容ではありません。
・まずは裏RAMを使用しないバージョンです。
・FM-7、FM-8で共通です。
・PF4 を押すと一瞬でコンパイルが完了します。
オブジェクトは、ランタイムルーチンを含んだサイズで表示されます。
・PF5 を押して実行します。
・続いて、裏RAMを使うバージョンです。
・FM-7 と FM-8 で若干操作が異なります。(画面はほぼ共通...orz)
・FM-7 の場合は、裏RAM使用しないバージョンとの差異は次の通りです。
・Bellが1回鳴る。
・オブジェクトコードが裏RAMに格納されている。
PF5 には裏RAMからのローダーも一緒に呼んでるので、裏RAMなし版と同じ使い勝手です。
・FM-8 の場合は、コンパイル開始すると Bell が鳴る(鳴り続ける)ので、後ろの DIP-SW で
DOSモードに切り替えた後、STOPキーを押します。するとコンパイルが再開します。
コンパイルが終了すると再び Bell が鳴る(鳴り続ける)ので、後ろの DIP-SW で
BASICモードに切り替えた後、STOPキーを押します。
同じ操作が、TF8 のローダーでも必要です。
画面には一切指示が出ないので不親切と言えなくもないですが...
・次に、少し大きなプログラムをコンパイルしてみましょう。
・例として取り上げるのは、TL/1-PC と一緒に紹介されていた、RENJU(連珠)です。
・TL/1-PC で動作確認の取れたソースコードを ASCII形式で持ってきます。
必要な修正は次の通りです。(コード部分としてはわずか1バイトの修正で済みました。)
30 '% for TL/1-PC %
510 ' AD0:=$B0 AD1:=AD0+1 AD2:=AD1+1 AD3:=AD2+1 AD4:=AD3+1
↓
30 '% for TL/1-FM %
510 ' AD0:=$38 AD1:=AD0+1 AD2:=AD1+1 AD3:=AD2+1 AD4:=AD3+1
3170 '/
・裏RAMを使用しないモードで!コンパイルします。[重要]
・コンパイルが無事終了しました。
・RENJU(連珠)では、2次元配列を別途確保する必要があり、&h3800-42FF をそれに当ててます。
従って、実行前にメモリをクリアしてあげます。(CLEAR ,&h37FF)
・そして PF5 で実行です。
(裏RAMモードだとオブジェクトと配列がかぶってしまうので...)
・先手か後手か、聞かれます。
・先手の方が有利ですが、敢えて後手で。
・COMPUTER は中央に打ってきます。
・今回は、たまたま勝てました!
・けっこう強いです。一時期はまってました...
参考文献
月刊アスキー 1981年1月号 (アスキー)
月刊アスキー 1981年3月号 (アスキー)
月刊アスキー 1982年10月号 (アスキー)
月刊アスキー 1984年4月号 (アスキー)
月刊アスキー 1984年5月号 (アスキー)
月刊アスキー 1984年6月号 (アスキー)
月刊アスキー 1984年7月号 (アスキー)
8.5 COMSOLコンパイラ
●
COMSOLコンパイラはアスキーから販売されていた、6809用のコンパイラです。
当初はベーシックマスターLEVEL3(BM-L3)用が販売されましたが、その後、FM-8用、FM-7用が
販売されました。ほとんど宣伝されてなかったようなのでご存じない方も多いと思います。
未確認情報ですが、Copycat FM というコピーツールが、COMSOL で開発されていたそうです。
文法は、上で紹介している TL/1と驚くほど似ています。兄弟関係にあるのかもしれませんが、
詳細は不明です。
・概要
Pascal系構造化言語。データタイプは INTEGER(2バイト整数)のみ。2パスコンパイラ。
ソースコードはBASICのエディタを使用して作成。オンメモリまたはアスキーセーブ。
生成オブジェクトはポジションインデペンデント。一旦リロケータブルモジュールと
して生成され、リンカでライブラリと結合してオブジェクトを生成。当然分割コンパイル可。
グラフィクス操作の手続き/関数をライブラリとして用意。
ディスク版はさらに追加ライブラリあり。
・コンパイル処理:2 PASS
オンメモリ ファイル
ソース入力 ○ ○
オブジェクト出力 × ○
オブジェクトコードは独自のリロケータブルフォーマットで出力される。
・ファイルシステム拡張:あり
3 リロケータブル・ライブラリ
誤ってロード&実行しないための対策と思われる。
・COMSOLコンパイラはアスキーコンシューマプロダクツ(ACP)から提供されていました。
提供元 |
型格 |
発売年月 |
品名 |
価格 |
機種 |
メディア |
備考 |
ACP |
- |
1981年7月 |
COMSOL-L3 |
19,800 |
BM-L3 |
TAPE |
|
ACP |
- |
1981年9月 |
COMSOL-L3 |
29,800 |
BM-L3 |
5" 1S |
5" 2D版の発売時期不明 |
ACP |
- |
1982年12月 |
COMSOL-FM8 |
19,800 |
FM-8 |
TAPE |
|
ACP |
- |
1982年12月 |
COMSOL-FM8 |
29,800 |
FM-8 |
5" 2D |
|
ACP |
- |
1983年3月? |
COMSOL-FM7 |
19,800 |
FM-7 |
TAPE |
GRLIBにSCREEN,PALET追加、PSGLIB追加 |
ACP |
- |
1983年3月? |
COMSOL-FM7 |
29,800 |
FM-7 |
5" 2D |
GRLIBにSCREEN,PALET追加、PSGLIB追加 |
★COMSOL-FM7(DISK版) に含まれるファイルです。
・けっこうたくさんのファイルがありますね。
・read.me1 は、各ファイルの説明文です。ただし英語ですが。
・read.me2 では、コンパイル&リンクの手順が説明されています。これも英語です。
・この画面で注目していただきたいのは、xxxx.R (リロケータブルファイル) のファイル種類が
'3' となっている点です。F-BASICのファイルシステムでは、0/1/2 の値しか使っていません。
# 尚、説明の都合で、横FILES表示可能に改造した F-BASIC V3.0 システムディスクで起動後に、
# COMSOL-FM7 のディスクに入れ替えて FILES を実行しています。
# COMSOL-FM7 のディスクには通常バージョンの F-BASIC V3.0 の DISK CODE が含まれています。
# (ただし "821001"版 です。)
・read.me1 の中味です。(その1)
・COMPILE.L、compile.l は、それぞれファイル版、オンメモリ版のコンパイラ本体です。
・LINKER.L はリンカー本体です。
説明文にはないですが、必要最低限の IOライブラリも含んでいます。
・COMPILE、LINK は、それぞれ、ファイル版コンパイラ、リンカーを呼び出す簡単なローダーです。
・SIZE は、バイナリファイルのサイズ表示と、メモリ上の最上位に配置した場合の先頭アドレス
を教えてくれます。(フリーエリアを最大限確保するため)
・IOLIB.S、IOLIB.R は、それぞれ基本IOライブラリのソースファイル、リロケータブルライブラリです。
上記の必要最低限の IOライブラリで済む場合にはこのライブラリは LINK不要です。
・read.me1 の中味です。(その2)
・GRLIB.S、GRLIB.R は、それぞれグラフィックライブラリのソースファイル、リロケータブルライブラリです。
・PSGLIB.S、PSGLIB.R は、それぞれPSG駆動用のソースファイル、リロケータブルライブラリです。
PSG駆動と言っても音楽演奏できるわけではなく、F-BASIC の SOUND命令相当のみです。
・MATH1.R、MATH2.R は、ディスク版のみに付属の、実数演算ライブラリです。
ソースはありません。
・KLIB.R は漢字表示のためのライブラリです。ソースはありません。
漢字は JISコードで指定するタイプです。
・DIOLIB.R は、ディスク版のみに付属の、ランダムアクセスデータ用ライブラリです。
F-BASIC DISK版の PUT#、GET# 相当が実行できます。ソースはありません。
・xxxx.S は、各種デモのソースファイルです。
COMSOL-FM8/FM7 メモリマップ
コンパイル時 ← リンク時
オンメモリ版 ファイル版
$0000-+--------------------------------------------------------------+
|F-BASICワーク |
TEXT TOP-+--------------------------------------------------------------+
|ソースコード | |ローダー | |ローダー |
| | |(COMPILE) | |(LINK) |
(*)$2000-+ + + + -+------------------+
| | | | |オブジェクトコード|
|スタック | |スタック | | |
(*)$4000-+------------------+ -+------------------+ | |
|COMSOL-FM7/FM8 | |COMSOL-FM7/FM8 | | |
|コンパイラ | |コンパイラ | | |
|(compil.l) | |(COMPIL.L) | | |
(*)$6000-+ + + + -+------------------+
| | | | |リンカーワーク |
| | | | |スタック |
(*)$6300-+ + + + -+------------------+
| | | | |COMSOL-FM7/FM8 |
| | | | |リンカー |
| | | | |(LINKER.L) |
RAM END-+--------------------------------------------------------------+
|(DISK-BASIC) |
$8000-+--------------------------------------------------------------+
| |
|BASIC ROM |
| |
$FC00-+--------------------------------------------------------------+
|I/Oなど |
$FFFF-+--------------------------------------------------------------+
(*)ロードアドレスは一例。
それでは、GRDEMO.S をコンパイル&リンクして実行してみましょう。
・まずは GRDEMO.S の中味です。
・PROC/FUNC xxxx; EXTERNAL; となっているプロシジャ、ファンクションについては、
ライブラリのリンクが必要です。
・RUN"COMPILE でコンパイラを起動します。
・最初にソースファイルを指定します。
・1パス目のコンパイルがすぐに終了します。
・続いて、リロケータブルオブジェクトの出力ファイルを指定します。
・2パス目のコンパイルもすぐに終了します。
・続いて、RUN"LINK でリンカーを起動します。
・プリンタへ出力するか否か、メモリの上限、オブジェクトのロードアドレスを入力します。
・リンクするファイルを指定します。
・リンクしている様子です。
・外部参照が必要な PROC/FUNC が表示されるので、リンクライブラリを指定します。
・一度に1つのライブラリしかリンクできないので、繰り返します。
・リンクが無事完了しました。
・生成されたモジュール内のアドレスマップが表示されます。
・ご覧の通り、必要のないものまでリンクされてしまいます。
・最後に、生成されたモジュールを DISK に書き出します。
・生成されたモジュールを実行してみましょう。
・LOADM でロードする際、オフセットアドレスは必須です。
さもないと 0番地にロードされてしまいます。
・ロード完了したら EXEC で実行します。
・実は、リンク直後にはメモリ内にオブジェクトがロードされたままなので、
SAVE と LOADM を省略することができます。
・GRDEMO 起動直後です。
・楕円が6つ描かれます。
・しばらく経った後の状況です。
・これが意図したものなのかは不明です。
・放っておくと、延々と続くので、BREAKキーで止めます。
すると F-BASIC に戻ります。
参考文献
月刊アスキー 1981年8月号 (アスキー) P.61 Pascal型の高速新言語、COMSOL
月刊アスキー 1981年10月号 (アスキー) P.64 COMSOLにディスク版登場
COMSOL-L3 チラシ 1981年9月1日(アスキーコンシューマプロダクツ)
COMSOL-FM8 User's Manual 初版 1981年12月1日(アスキーコンシューマプロダクツ)
8.6 Pascalコンパイラ
●
FM-7シリーズ用にも富士通からUCSD-Pascalが提供されていましたが、価格も高く、あまり一般的ではありませんでした。
しかし、FM77AV20/40の時代に、本格的でかつリーズナブルな価格の実数型Pascalコンパイラが登場しました。
黒姫さんが開発された FM-Pascal がそれで、1987年にI/O誌で5ヶ月の連載で発表されました。
FM-7シリーズ向け言語処理系としては、最後発になると思います。(バージョンアップを除き)
エディタや、実行環境としての
DOS(P-dos) を含む、コンパイラ・システムとして構成されており、
基本に忠実な実装で、6809のネイティブコードではなくPコードを生成し、Pコードインタプリタで実行します。
(UCSD-Pascalと同じ方式) そのため若干実行速度が落ちるのは否めません。
尚、作者の黒姫さんに関しては情報が少なく、何かご存じの方がおられましたら、ぜひ教えてください。
・概要
言語処理系は、Pascal-P4コンパイラ・システムのソースコード付解説書である、
"Pascal Implementation: The P4 Compiler"
"Pascal Implementation: Compiler and Assembler/Interpreter"
Steven Pemberton and Martin Daniels 共著、Ellis Horwood Limited, 1982
同日本語版「Pascalの言語処理系: Pascal-P4、翻訳系・直訳系/通訳系(2冊セット)」
武市 正人 木村友則 共訳、近代科学社、1984
を元に開発されており、(当時の)標準Pascalと同等とのこと。(但し一部制限あり)
黒姫氏オリジナルのグラフィクスライブラリをPコードインタプリタに内蔵し、call_mac で呼び出し可能。
P-dosとエディタも黒姫氏オリジナルで、Pascal- の名を冠しているが特に Pascal専用の機能は無く、
汎用の作り。もう少し早く発表されていれば広く使われた可能性があるだけに残念。
・コンパイル処理:
入力 出力
コンパイル テキストファイル テキストファイル
Pコードアセンブラ テキストファイル オンメモリ
Pコードインタプリタ オンメモリ ―
上記3ステップを一気に実行するバッチプログラム p も用意されています。
市販のもの |
|
|
|
|
提供元 |
型格 |
発売年月 |
品名 |
価格 |
機種 |
メディア |
備考 |
ディスケットサービス |
|
|
|
|
コムパック |
|
1987年2月頃 |
Pascalコンパイラ |
3,000 |
FM-7シリーズ |
5inch 2D |
Pascalコンパイラ本体、P-Codeインタプリタ、P-dos |
コムパック |
|
1987年2月頃 |
Pascalコンパイラ |
3,200 |
FM-7シリーズ |
3.5inch 2D |
Pascalコンパイラ本体、P-Codeインタプリタ、P-dos |
コムパック |
|
1987年3月頃 |
Pascalコンパイラ(アセンブラ、エディタ) |
3,000 |
FM-7シリーズ |
5inch 2D |
P-Codeアセンブラ、エディタ他 |
コムパック |
|
1987年3月頃 |
Pascalコンパイラ(アセンブラ、エディタ) |
3,200 |
FM-7シリーズ |
3.5inch 2D |
P-Codeアセンブラ、エディタ他 |
コムパック |
|
1987年5月頃 |
Pascalコンパイラ(ユーティリティ) |
2,000 |
FM-7シリーズ |
5inch 2D |
プリンタ印字ユーティリティ、画面のハードコピー他 |
コムパック |
|
1987年5月頃 |
Pascalコンパイラ(ユーティリティ) |
2,200 |
FM-7シリーズ |
3.5inch 2D |
プリンタ印字ユーティリティ、画面のハードコピー他 |
EXシリーズ (ビニールケース、マニュアル付き) |
|
|
|
|
Wonder Soft |
WF-083E |
1987年6月 |
FM-Pascal 実数型Pascalコンパイラ・システム |
9,800 |
FM-7シリーズ |
5inch 2D |
|
Wonder Soft |
WF-084E |
1987年6月 |
FM-Pascal 実数型Pascalコンパイラ・システム |
9,800 |
FM-7シリーズ |
3.5inch 2D |
|
|
|
|
|
|
|
|
|
|
|
雑誌・書籍掲載のもの |
|
|
|
|
出版元 |
掲載誌・書 |
発行年月 |
タイトル |
掲載ページ |
機種 |
作者・開発元 |
ソース |
ダンプ |
パッチ |
言語 仕様 |
備考 |
工学社 |
I/O |
1987年2月 |
実数型Pascalコンパイラ・システム[1]
Pascalコンパイラ、バッチファイル、Pコード・インタプリタ |
161 |
FM-7シリーズ |
黒姫氏 |
|
○ |
|
|
p,pas,p4.ini,sysdsk, pdos.sys,int |
|
I/O |
1987年3月 |
実数型Pascalコンパイラ・システム[2]
標準Pascalとの違い、アセンブラ、エディタ・プログラム |
183 |
FM-7シリーズ |
黒姫氏 |
|
○ |
|
○ |
asm,edit,chgstp |
|
I/O |
1987年4月 |
実数型Pascalコンパイラ・システム[3]
エディタ。Pコード |
265 |
FM-7シリーズ |
黒姫氏 |
△ |
|
|
|
グラフィックライブラリのソース |
|
I/O |
1987年5月 |
実数型Pascalコンパイラ・システム[4]
P-dosのワークエリア、ユーティリティ |
265 |
FM-7シリーズ |
黒姫氏 |
|
○ |
|
|
ユーティリティ |
|
I/O |
1987年6月 |
実数型Pascalコンパイラ・システム[最終回]
システムのバグと注意点 |
243 |
FM-7シリーズ |
黒姫氏 |
△ |
|
○ |
|
コンパイラのパッチ、 ユーティリティのソース |
|
I/O |
1987年7月 |
[de BUG] FM-Pascal コンパイラ |
283 |
FM-7シリーズ |
編集部 |
|
|
○ |
|
|
★I/O誌1987年2〜6月号に掲載された記事を元に FM-Pascalを構成してみました。
・まずはおまじないです。
・FM-Pascal は P-dos上で動くのですが、P-dos起動時に同時オープンファイル数を聞かれます。
・ここでは、2を指定します。【重要】
・P-dos v2.6 が起動しました。詳細については
こちらのページを参照願います。
・ビルトインコマンドの files で格納されているファイルの一覧を表示してみます。
・I/O誌に掲載されていたファイルはこれで全てですが、WonderSoft から発売されていたものが
これと同じかどうかは不明です。
ご存じの方がいらしたら情報お願いします。
・さっそくコンパイルしてみましょう。
・題材は、巨匠 Niklaus Wirthさんの名著 Algorithms + Data Structures = Programs (Prentice-Hall, 1976)
に掲載されていた、8-Queen です。
・当時、ベンチマークプログラムとしてもよく利用されていたようです。
・
こちらに打ち込んだものを置いておきます。
左は、これを 8queen.S というファイル名でセーブしたものです。
・pas でコンパイラを起動します。
・コマンドラインパラメタはありません。
・起動するとオプションを聞いてきますが、ここではそのままリターンします。
・続いて、ソースファイル名を指定します。
・デフォルト設定では、ソースリストを表示しながらコンパイルします。
・残念ながらエラーが出ました。
・12行目のエラーは、end { print } ; という構文がサポートされていないようです。
これは、Pascal-P4コンパイラの仕様だそうです。
・14行目のエラーは無視します。
・最終的に、2か所エラーが検出されました。
・24行目は、12行目と同じエラーです。
・26行目のエラーは無視します。
・エディタで修正することにします。
・edit でエディタを起動します。
・Pascal editor と表示されますが、字下げやキーワード推定といった Pascal専用機能 は特に無く、
普通のラインエディターです。
・本エディタの使い方については
こちらのページを参照願います。
・Lコマンドで 8queen.S を読み込んで修正します。(途中省略)
・修正が完了したので、Sコマンドでセーブします。
・FMの流儀により、上書きする場合は確認を求められます。
・再度コンパイラを実行します。
・無事、エラーがなくなりました。
・実は、デフォルトのコンパイルオプションだと先へ進めないので、設定変更して再度コンパイルします。
・コンパイルオプションは、カーソルキーで移動して変更します。
リストは不要なので l- に、アセンブル出力をするので c+ に変更します。
・ソースファイル名に加えて、出力ファイル名の入力が求められます。
・ここでは、8queen.P と入力してみました。
・コンパイルが無事完了し、アセンブルソースファイルも生成されています。
・続いて、Pコードアセンブルソースより、Pコード(バイナリ)を生成します。
・asm で Pコードアセンブラを起動します。特にオプションはありません。
・ソースファイル名を求められるので、8queen.P と入力してみます。
リターンすると、ソースを表示しながらアセンブルします。
・アセンブルが完了しました。
・Pコードは常にオンメモリに生成され、格納されたアドレスが表示されます。
・Pコードソースファイルの表示は、正直、不要だと思います。(ここでエラー出ることはないので)
・最後に、PコードインタプリタでPコードを実行します。
・int で Pコードインタプリタを起動します。特にオプションはありません。
オンメモリのPコードを解釈して実行するので、ファイル名の指定もありません。
・ロード完了後、そのまま実行を開始します。
・無事、実行完了しました。
・正味のPコードの実行時間は、35.8秒でした。
・お疲れ様でした。
★ワンポイントテクニック
・ワンポイントテクニックを紹介します。
・Pコードアセンブルの際のリスト表示を抑制するには、次のようにします。
LOADM"asm
POKE &H35,0
EXEC
・Pコードインタプリタのロードと実行を分離するには、次のようにします。
LOADM"int
EXEC
★バッチ処理
・これまで、pas、asm、int の3ステップを個別に実行してきましたが、一気にやる方法も存在します。
・p というバッチ処理コマンドを使用します。
・p の後に、Pascalのソースファイル名を指定します。
・コンパイル、アセンブル、インタプリタが連続で実行されます。
・コンパイル時にPascalのソースは表示されますが、アセンブル時にはソース表示はありません。
★はせりんの見つけたバグとパッチ
・edit に Pascal専用機能は無い、と上で書きましたが、実は FM-Pascal専用機能として、エディタからコンパイル、アセンブル、インタプリタを呼び出す機能があります。
・ただし、この機能にはバグがあり、正しく動作しません。
・そこで、パッチを当てます。
POKE &H0264,&H01
POKE &H0265,&HE6
・Iコマンドで簡単なプログラムを入力してみます。
・R リターンとすると、コンパイル、アセンブル、インタプリタが連続で実行されます。
・RUN とすると、実行後にエディタに戻ります。(画面キャプチャは省略)
TURBO PASCAL的な使い方ができる、という事ですね。
メモリマップ
アセンブラはオブジェクトをオンメモリに生成するので、
アセンブル完了後インタプリタをロードして実行する。
↓
コンパイル時 アセンブル時 インタプリタ実行時
0 -+-----------------------+ 0 -+-----------------------+ 0 -+-----------------------+
| | | | | |
| pas | | asm | | int |
| (Pascalコンパイラ) | | (Pコードアセンブラ) | | (Pコードインタプリタ)|
| | | | | |
| | E00 -+-----------------------+ | |
| | | シンボルテーブル | | |
| | 2400 -+-----------------------+ 2400 -+-----------------------+
| | | | | |
| | | Pコード格納領域 | | Pコード格納領域 |
| | | | | |
5B00 -+-----------------------+ | | | |
| | | | | |
| シンボルテーブル | -+-----------------------+ -+-----------------------+
| | | | | |
A000 -+-----------------------+ | | | |
| p4.ini | | | | |
| (コンパイラ初期化) | | | | |
A880 -+-----------------------+ | ワークエリア | | ワークエリア |
| | | | | |
| ワークエリア | | | | |
| | | | | |
D654 -+-----------------------------------------------------------------------------------------+
〜E417| システムスタック |
| 各種バッファ領域 |少なくとも2つのファイルバッファが必要
| ワークエリア |
EC00 -+-----------------------------------------------------------------------------------------+
| |
| P-dos本体 |
| |
FC00 -+-----------------------------------------------------------------------------------------+
| バッチ処理用 |
FC80 -+-----------------------------------------------------------------------------------------+
| I/O、BOOT ROM他 |
FFFF -+-----------------------------------------------------------------------------------------+
グラフィクスライブラリ呼び出し方法:
type trcb=array [0..7] of integer;
var rcb: trcb;
rcb [0] := リクエスト番号;
rcb [1] := 必用に応じてパラメタを設定;
〜
rcb [7] := 〃
dummy := call_mac(rcb);
rcb[0] | 機能名 | rcb[1] | rcb[2] | rcb[3] | rcb[4] | rcb[5] | rcb[6] | rcb[7] |
0 | console | nc | nl | sl | ns | fd | gr |
2 | color | c |
3 | locate | x | y |
4 | line | x1 | y1 | x2 | y2 | function | color | boxflag |
5 | pset | x | y | color | function |
6 | paint | x | y | color/border1 | border2/border3 | border4/border5 | border6/border7 |
7 | symbol | x | y | vmag | hmag | col/func | angle/term | spointer |
8 | test | address | 8 | 'm' | 'a' | 'c' | 0 |
14 | inkey | |
★システムジェネレーション
・I/O 1987年2-6月号掲載プログラムを打ち込んだ状態です。
・総計で54KBあります。がんばって打ち込んでください。
・まず、P-dosのシステムディスクを生成します。
・ドライブ1にフォーマット済のフロッピーディスクをセットし、pdos.sys を実行します。
・さきほどのフロッピーをドライブ0にセットし、P-dosを起動させます。
・P-dos起動時に同時オープンファイル数を聞かれます。
・ここでは、2を指定します。【重要】
・再度フロッピーを入れ替えて、sysdsk にでシステムジェネレーションを進めます。
・画面キャプチャしてませんが、次の前処理が必要です。【重要】
プログラム名 | 掲載アドレス | 修正アドレス |
p | &H1000-&H108F | &H0000-&H008F |
pas | &H1000-&H6AFF | &H0000-&H5AFF |
p4.ini | &H1000-&H187F | &HA000-&HA87F |
int | &H1000-&H33FF | &H0000-&H23FF |
オフセットをかけて LOADM して、修正後のアドレスで SAVEM します。実行アドレスは 0 でOKです。
この処理は P-dos じゃないとできません。
・sysdsk は、P-dos でないと動きません。【重要】
・いろいろと質問されますが、全てデフォルト(お勧め)設定で進めます。(途中省略)
・システムジェネレーションが完了しました。
・お疲れ様でした。
8.7 Cコンパイラ
●
FM-7シリーズ用の、F-BASICから起動可能(=市販OSを使用しない)Cコンパイラは、
少なくとも3種類発表されていました。偶然かもしれませんが、3件とも1986年に発表されてます。(初出時)
どれも 64KBの狭いメモリと戦いながら、高速でかつ手軽なCコンパイラを追及されていて、
ご苦労が偲ばれます。
概要を表にまとめてみました。
|
FM-Cコンパイラ |
DOH-Cコンパイラ |
Draco Cコンパイラ |
TAPE版 |
DISK版 |
V1.0 |
V2.0 |
発表年月 |
1986年10月 |
1986年3月 |
1986年12月 |
1987年10月 |
作者 |
広瀬 峰太郎氏 |
津田 伸秀氏 |
笠 晃一(ミスタードラコ)氏 |
掲載誌 |
I/O |
×(市販版のみ) |
The BASIC |
I/O |
×(市販版のみ) |
Compile制御 |
Monitor(cc.m) |
cc/cc2 |
cc |
CC/LCC/MCC |
Editor |
内蔵(cc.m内) |
─ |
─ |
se |
Assembler |
cc.a |
─ |
fa.o |
asmb |
Source Code |
オンメモリ |
オンメモリ |
ファイル |
ファイル |
Object Code |
オンメモリ |
オンメモリ |
オンメモリ |
ファイル |
Object形式 |
特殊アセンブリ言語 |
6809バイナリ |
6809アセンブリ |
Cc Pass |
3 |
1 |
1 |
Asm Pass |
N |
─ |
2 |
ラージモデル |
× |
× |
× |
○ |
F-BASIC拡張 |
× |
× |
× |
○(CRUNコマンド) |
ファイルシステム拡張 |
× |
× |
× |
○('9'=ラージモデル) |
言語仕様 |
|
#include |
○ |
○ |
○ |
#define |
△(引数不可) |
△(引数不可) |
△(引数不可) |
#ifdef |
× |
× |
○ |
#line |
× |
× |
× |
#asm |
○ |
△(code文で埋め込み) |
○ |
Data Type |
|
char |
○(Unsigned) |
○(Unsigned) |
○ |
unsigned char |
× |
× |
○ |
short |
× |
× |
○(8bit) |
int |
○ |
○ |
○ |
unsigned |
△(ポインタのみ) |
○ |
○ |
long |
× |
× |
△(16bit) |
float |
× |
× |
○ |
double |
× |
× |
△(32bit) |
その他 |
|
F-BASIC呼出し |
○ |
× |
× |
・FM-7シリーズ用Cコンパイラは月刊I/O誌や月刊The BASIC誌に掲載されたものと、市販版が存在しました。
市販のもの |
|
提供元 |
型格 |
発売年月 |
品名 |
価格 |
機種 |
メディア |
備考 |
COMPAC |
- |
1986年12月 |
Draco C コンパイラ V1.0 |
3,000 |
FM-7/NEW7 |
5" 2D |
ディスケットサービス |
|
- |
1986年12月 |
Draco C コンパイラ V1.0 |
3,200 |
FM-77/AV |
3.5" 2D |
ディスケットサービス |
|
- |
1987年2月 |
Draco C コンパイラ(アセンブラ) |
3,000 |
FM-7/NEW7 |
5" 2D |
ディスケットサービス |
|
- |
1987年2月 |
Draco C コンパイラ(アセンブラ) |
3,200 |
FM-77/AV |
3.5" 2D |
ディスケットサービス |
|
- |
1987年3月 |
Draco C コンパイラ(駆動プログラム) |
2,000 |
FM-7/NEW7 |
5" 2D |
ディスケットサービス |
|
- |
1987年3月 |
Draco C コンパイラ(駆動プログラム) |
2,200 |
FM-77/AV |
3.5" 2D |
ディスケットサービス |
WonderSoft |
WF-111E |
1987年10月 |
Draco Cコンパイラ V2.0 |
9,800 |
FM-77/AV |
3.5" 2D |
ラージモデル対応 EXシリーズパッケージ |
|
WF-112E |
1987年10月 |
Draco Cコンパイラ V2.0 |
9,800 |
FM-7/NEW7 |
5" 2D |
ラージモデル対応 EXシリーズパッケージ |
システムソフト |
- |
1986年2月 |
DOH-Cコンパイラ Ver 1.1 |
19,800 |
FM-7/77/AV |
5" 2D, 3.5" 2D |
ファイル版 |
|
- |
1986年2月 |
DOH-Cコンパイラ Ver 1.1 |
9,800 |
FM-7/77/AV |
TAPE |
オンメモリ版 |
|
- |
1987年3月 |
DOH-Cコンパイラ Ver 1.2 |
19,800 |
FM-7/77/AV |
5" 2D, 3.5" 2D |
ファイル版 |
|
- |
1987年3月 |
DOH-Cコンパイラ Ver 1.2 |
9,800 |
FM-7/77/AV |
TAPE |
オンメモリ版 |
|
|
|
|
|
|
|
|
雑誌・書籍掲載記事 |
|
出版元 |
掲載誌 |
発行年月 |
タイトル |
掲載ページ |
機種 |
作者・開発元 |
ソース |
ダンプ |
パッチ |
備考 |
工学社 |
I/O |
1986年10月 |
FM Cコンパイラ |
209 |
FM-7シリーズ |
広瀬 峰太郎氏 |
|
○ |
|
|
|
I/O |
1986年11月 |
FM Cコンパイラ改良と補足 |
233 |
FM-7シリーズ |
広瀬 峰太郎氏 |
|
|
○ |
|
|
I/O |
1986年12月 |
Draco C |
245 |
FM-7/N7/77/AV |
笠 晃一氏 |
|
○ |
|
Draco-C Ver 1.0 |
|
I/O |
1987年1月 |
Draco C [2] マニュアル |
272 |
FM-7/N7/77/AV |
笠 晃一氏 |
|
|
|
|
|
I/O |
1987年2月 |
Draco C [3] アセンブラ |
185 |
FM-7/N7/77/AV |
笠 晃一氏 |
|
○ |
|
|
|
I/O |
1987年3月 |
Draco C [終] 駆動用プログラム |
244 |
FM-7/N7/77/AV |
笠 晃一氏 |
|
○ |
|
|
|
I/O |
1987年4月 |
debug |
271 |
- |
(編集部) |
|
|
○ |
3月号掲載リストの訂正 |
|
I/O |
1987年5月 |
Draco C [補足] fsub, save |
271 |
FM-7/N7/77/AV |
笠 晃一氏 |
|
○ |
|
|
|
I/O |
1987年7月 |
Draco C エラーコード表 |
266 |
FM-7/N7/77/AV |
ミスタードラコ氏 |
|
|
|
ミスタードラコ氏=笠 晃一氏 |
技術評論社 |
The BASIC |
1986年2月 |
Pに学ぶ 手作りコンパイラ入門 |
57 |
- |
津田 伸秀氏 |
|
|
|
Cコンパイラ開発中の旨コメントあり |
|
The BASIC |
1986年2月 |
敢えて強要しない連続的OS-9話F |
86 |
- |
畑山 広喜氏 |
|
|
|
DOH-C Ver 0.2 をフライングで紹介 |
|
The BASIC |
1986年3月 |
DOH-Cコンパイラ Ver 1.0 |
33 |
FM-7/77/AV |
津田 伸秀氏 |
|
○ |
|
|
|
The BASIC |
1986年4月 |
DOH-Cコンパイラ Ver 1.0 [2] |
73 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
|
言語仕様 |
|
The BASIC |
1986年4月 |
バグ情報とお知らせ |
144 |
FM-7/77/AV |
(編集部) |
|
|
○ |
3月号掲載リストの訂正 |
|
The BASIC |
1986年5月 |
DOH-Cコンパイラ Ver 1.0 [3] |
85 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
○ |
組み込み関数 |
|
The BASIC |
1986年6月 |
DOH-Cコンパイラ Ver 1.0 [4] |
89 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
|
ライブラリ(I) |
|
The BASIC |
1986年7月 |
DOH-Cコンパイラ Ver 1.0 [5] |
50 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
|
ライブラリ(II) |
|
The BASIC |
1986年8月 |
DOH-Cコンパイラ Ver 1.0 [6] |
75 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
|
ライブラリ(II) |
|
The BASIC |
1986年10月 |
DOH-Cコンパイラ Ver 1.0 [7] |
140 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
|
ライブラリ(IV) |
|
The BASIC |
1986年11月 |
DOH-Cコンパイラ Ver 1.0 [8] |
140 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
|
code文の活用 |
|
The BASIC |
1987年2月 |
DOH-Cコンパイラ Ver 1.0 [9] |
110 |
FM-7/77/AV |
津田 伸秀氏 |
|
|
|
直線と円 |
|
The BASIC |
1987年4月 |
DOH-Cコンパイラ Ver 1.2 |
65 |
FM-7/77/AV |
津田 伸秀氏 |
|
○ |
|
バージョンアップ |
|
The BASIC |
1987年5月 |
バグ情報 |
162 |
FM-7/77/AV |
(編集部) |
|
|
○ |
4月号掲載リストの訂正 |
|
The BASIC |
1987年6月 |
テキストエディタ"ed"の作成@ |
117 |
FM-7/77/AV |
津田 伸秀氏 |
○ |
|
|
|
|
The BASIC |
1987年7月 |
テキストエディタ"ed"の作成A |
139 |
FM-7/77/AV |
津田 伸秀氏 |
○ |
|
|
|
★FM-Cコンパイラ
・広瀬 峰太郎氏による、FM-Cコンパイラです。
・整数のみのサポートのため、扱えるデータタイプは char(符号なし)と int(符号付)のみです。
・ソース、オブジェクトともオンメモリなのでコンパイルが高速なのが特長です。
読み終わったテキスト領域に重ね合わせてオブジェクトコードを生成する等、
少ないメモリで使用できるよう工夫されています。
・分割コンパイルはできません。
・ディスクサービスとか市販版はありませんので、入手方法としてはひたすら打ち込みしかないようです。
FM-C メモリマップ
コンパイル時 アセンブル時(テキストが大きい時のみ)
アセンブル時
$0000-+--------------------------------------------+
|F-BASICワーク |
$1000-+--------------------------------------------+
|ワークエリア | |ワークエリア |
| ↑ ↑ | | ↑ ↑ |
|スタック | |スタック |
$2000-+--------------------+ -+--------------------+
|"cc.c" | | |
|FM-Cコンパイラ本体 | | |
| | | |
$4000-+ + -+--------------------+
| | |"cc.a" |
| | |アセンブラ |
$4E60-+ + -+--------------------+
| | | |
$5200-+--------------------+ -+--------------------+
|"cc.m" | |"cc.m" |
|モニター、エディタ、| |モニター、エディタ、|
|ランライムライブラリ| |ランライムライブラリ|
$71D5-+--------------------+ -+--------------------+
|(DISK-BASIC) | |(DISK-BASIC) |
$8000-+--------------------+ -+--------------------+ -+--------------------+
|テキスト、 | |テキスト、 | | |
|オブジェクト | |オブジェクト | | |
| | | | |BASIC ROM |
| | | | | |
| | | | | |
| | | | | |
$EE00-+--------------------+ | | | |
|"cc.a" | | | | |
|アセンブラ | | | | |
$FC00-+ + -+ + -+--------------------+
| | | |
$FC80-+--------------------------------------------+
|I/Oなど |
$FFFF-+--------------------------------------------+
★DOH-Cコンパイラ
・Kコンパイラで有名な津田 伸秀氏による、DOH-Cコンパイラです。
・当時流行っていた TURBO PASCAL を強く意識した名称です。
実際、1パスコンパイルで 6809オブジェクトコードまで生成するため超高速です。
作者の津田 伸秀氏によれば、オブジェクトコードも Kコンパイラより高速との事です。
・整数のみのサポートのため、扱えるデータタイプは char(符号なし)、int(符号付)と
unsigned(符号なし)です。
・アセンブラを使用しないため、#asm(インラインアセンブラ)は使用できませんが、代わりに
Kコンパイラ等でおなじみの code文による 6809コードの埋め込みが可能となっています。
・ここで紹介している中では、唯一カセットテープ版が存在します。(市販版のみ)
DISK版との違いは、ソースコードがオンメモリとなる点で、コンパイルの手間が幾分省略
できますが、コンパイルできるサイズには制限があるようです。
・また、DISK版、TAPE版とも分割コンパイルはできません。
・当初は The BASIC掲載版と市販版でバージョンが異なっていたのですが、1987年4月号
掲載分の Ver 1.2で統一されています。
DOH-C コンパイラ DISK版 メモリマップ
コンパイル時 リンク時
$0000-+------------------+
|F-BASICワーク |
TEXT TOP-+------------------+
|"cc/cc2":起動Prog |
TEXT END-+------------------+
|スタック? |
$1400-+------------------+ +------------------+
|"fd00":コンパイラ | |"runt":ランタイム |
| 補助 | | |
$1500-+------------------+ | |
| | | |
$1900-+------------------+ +------------------+
|オブジェクト |
| |
| |
$71D5-+------------------+
|(DISK-BASIC) |
$8000-+------------------+ +------------------+
|"fd1" :DOH-C | |F-BASIC ROM |
| :コンパイラ | | |
| :本体 | | |
$B000-+------: | | |
|"fd2" : | | |
| : | | |
$D600-+------------------+ | |
| | | |
$FC00-+------------------+ +------------------+
|I/Oなど |
$FFFF-+------------------+
★Draco Cコンパイラ
・ALF77コンパイラで有名な笠 晃一氏による、Draco Cコンパイラです。
・実数をサポートした本格的コンパイラです。ただし、long が 16bit、double が 32bit と
少々残念なスペックになっています。
・V1.0 が1986年12月にI/O誌に掲載された後、1987年10月にV2.0(市販版)が発売されています。
・V1.0:I/O誌掲載版、ディスクサービス版
・V2.0:市販版
・V2.0 では、V1.0 と比較し、
・F-BASIC に CRUNコマンドを拡張し、コンパイルの手間を軽減
・ラージモデルのサポート(そのためのファイルシステム拡張あり)
・DISK CODE を VRAM に退避してメモリを広く使えるモードあり。
・スクリーンエディタ(se)のCソースとバイナリの同梱
・逆アセンブラ、ディスクエディタのCソース同梱
といったサービス満点の内容と思います。
# se は、I/O誌1985年11月号に掲載された「スクリーンエディタ Ver 1.0」の
# C言語版と思われます。(このエディタは ALF77専用ではなく汎用に作られてます。)
★Draco C コンパイラ V2.0 のシステムディスクを起動してみたところです。
・青地に水色文字が斬新です。
・画面には特に出ていませんが、CRUN コマンドが拡張されています。
# Draco C のディスクには通常バージョンの F-BASIC V3.0 の DISK CODE が含まれています。
# (ただし "821001"版 です。)
★Draco C コンパイラ V2.0 に含まれるファイルです。
・けっこうたくさんのファイルがありますね。
・この画面で注目していただきたいのは、cc (Draco Cコンパイラ本体) のファイル種類が
'9' となっている点です。F-BASICのファイルシステムでは、0/1/2 の値しか使っていません。
Draco C のシステムディスクではファイルシステムが拡張されており、'9'の場合はラージモデル
(裏RAMにまたがるような巨大バイナリ)がサポートされています。自動的に裏RAMに切り替えて
実行してくれます。
# 尚、説明の都合で、横FILES表示可能に改造した F-BASIC V3.0 システムディスクで起動後に、
# Draco C のディスクに入れ替えて FILES を実行しています。
# Draco C のディスクには通常バージョンの F-BASIC V3.0 の DISK CODE が含まれています。
# (ただし "821001"版 です。)
Draco-C メモリマップ
コンパイル時 実行時 ←
スモールモデル ラージモデル(V1.0では非対応)
$0000-+--------------------------------------------------------------+
|F-BASICワーク |
TEXT TOP-+--------------------------------------------------------------+
| | | ↑ ↑ | | |
| | |スタック | | |
$1000-+------------------+ -+------------------+ -+------------------+
|Draco C | |オブジェクトコード| |オブジェクトコード|
|コンパイラ本体 | | | | |
| | | | | |
| | +------------------+ | |
| | +------------------+ | |
| | |ダイレクトページ | | |
| | +------------------+ | |
| | |作業領域 | | |
| | | | | |
| | | | | |
$71D5-+ + +------------------+ | |
| | |(DISK-BASIC) | | |
$8000-+ + +------------------+ | |
| | | | | |
| | | | -+------------------+
| | |BASIC ROM | -+------------------+
| | | | |ダイレクトページ |
| | | | -+------------------+
| | | | |作業領域 |
$BD03-+------------------+ | | | |
|作業領域 | | | | |
| | | | | |
| | | | | |
| ↑ ↑ | | | | ↑ ↑ |
|スタック | | | |スタック |
$EC00-+------------------+ + + +------------------+
|DISK CODE | | | |DISK CODE |(V2.0では DISK CODE を VRAM に置くモードあり)
$FC00-+--------------------------------------------------------------+
|I/Oなど |
$FFFF-+--------------------------------------------------------------+
参考文献
月刊I/O アスキー 1986年10月号〜1987年7月号 (工学社)
月刊The BASIC 1986年2月号〜1987年7月号 (技術評論社)
Draco C コンパイラ取扱い説明書 1988年2月1日(ワンダーソフト/コムパック)
謝辞:福井利夫様、市販版BASE09、Sofix社Debug-Boyに関する情報ありがとうございました。
謝辞:maruan様、市販版Kコンパイラに関する情報ありがとうございました。
Under Consruction.
尚、本ページの各表の作成にはThinkさんのCSV→Table変換サイトのお世話になりました。
ありがとうございました。
F-BASIC起動画面集
F-BASIC詳細編
F-BASIC詳細編(その2:デモ画面集)
FM77AVシリーズ システムディスク編
FM77AVシリーズ デモ・入門ディスク編
CP/M-80
OS-9編
Flex編
F-BASIC ファイルシステム(およびその上位互換)上に構築されたOS、開発システム
FM-7/8シリーズ用プログラミング言語とその処理系
番外編(その2:勝手に誤記修正編)
番外編(その3:6809用MMU考察)
番外編(その5:FM-7,8シリーズのROM一覧)
番外編(その6:FM-77用拡張メモリ他について)
番外編(その7:FM-8/7/77/77AVシリーズの微妙な非互換性)
番外編(その8:FM-7/8シリーズ用アドオンCPUカード)
番外編(その11:FM-11,16シリーズのROM一覧)
緊急特集:MB22603の秘密
FM-8改造 備忘録
--------
レベル3BASICとF-BASIC を覗いてみる
テクノポリス誌ナウシカベンチマークとミンキーモモベンチマーク
ASCIIART(マンデルブロ集合)ベンチマーク
漢字ROM博物館(情報募集中)
--------
入り口ページに戻る
ご意見、ご要望はこちらまで(笑)