FM-7/8シリーズ用プログラミング言語とその処理系


本ページでは、FM-7/8シリーズ用プログラミング言語とその処理系について紹介しています。 ただし、市販OS用のものは除きます。(各OSのページで紹介予定です。) すなわち、本ページで紹介しているソフトウェアはほどんどがF-BASICファイルシステムで動作するものです。
各画面キャプチャについては、XM7を使用させていただきました。 PI.さん、たけがみりうさん、いつも感謝しております。
また、本ページの各表の作成にはThinkさんのCSV→Table変換サイトのお世話になりました。 ありがとうございました。

お急ぎの方へ。
≪言語別コーナー≫
アセンブラ、逆アセンブラ、デバッガKコンパイラTL/1コンパイラ
COMSOLコンパイラ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 独自ファイルシステム、後に\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.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
徳間書店 1984年10月 テクノポリス テクポリ特製アセンブラ 121 FM-7 イイシャンテン氏 ソースはF-BASICテキストのコメントで記述
CQ出版 1982年8月 インターフェース ASSIST09のFM-8への移植 138 FM-8 高橋豊氏 オリジナルはMOTOROLA社
ソフトバンク 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 大山 礼仁氏
アセンブラ:◎=マクロ機能あり、△=ラインアセンブラ
逆アセンブラ:○=ソースジェネレート、△=ライン逆アセンブラ
デバッガ:○=ブレークポイント、もしくはトレース機能

●富士通製アブソリュートアセンブラです。(各画像をクリックするとフルサイズの画像になります。)

ASM09_000
・まずは起動画面です。
・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)とします。
 (増やすとメモリ不足で動作しない可能性があります。)
 サンプルプログラム等も添付されず、あっさりとした内容です。

ASM09_001
・せっかくなのでサンプルプログラムを作成してみます。
・F-BASIC のコメント行で記載します。作成後に、忘れずに アスキーセーブ します。

ASM09_002
・上記をアセンブルしてみた結果です。
・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 -+-------------------------------------+
ASM09_003
・カセットテープからソースを読み込んでアセンブルしてみた例です。
・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シリーズの定番開発環境として一世を風靡した、エディタ・アセンブラです。
いくつかバージョンが発表されています。
(はせりんは現役時代には使ったことなかったのですが...)

EDASMV1_000
・オリジナル版の エディタ・アセンブラ V1.0 です。
・SOFT:エディタ・アセンブラ V1.0
・開発者:馬場 二郎さん
・機種:FM-8 (I/O誌には BM-L3への移植記事があります)
・掲載誌:I/O 1982年3月号、FM-8活用研究
・左の画面は、あらかじめ作成しておいたテキストファイルを読み込んだ後、エディタ・アセンブラを起動した様子です。
・ファイルの管理機能がないため、既存のテキストファイルはエディタアセンブラの起動前に読み込んでおきます。
 テキストとは言いながら、$1000〜 をバイナリで SAVE しておく必要があります。
 (SAVEM のアドレスは、R コマンドで事前に確認しておきます。)

EDASMV1_001
・さっそくアセンブルを実行してみます。
・SOFT:エディタ・アセンブラ V1.0
・機種:FM-8
・2PASS アセンブラですが、1、2 と手動で実行します。
 1 ラベル登録
 2 コード生成、リスト出力
・最後に B コマンドで F-BASIC のモニタ(MON) に戻っています。
 (直接 F-BASIC には戻れないようです。)

EDASMV1_002
・生成されたオブジェクトコードを実行してみます。
・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コマンドの直後のみ)
・クロスリファレンス出力可能

EDASMV2_000
・エディタ・アセンブラ 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 コマンドで事前に確認しておきます。)

EDASMV2_001
・アセンブル及び生成結果の実行例です。
・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
コムパック 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
雑誌・書籍掲載のもの
出版元 掲載誌・書 発行年月 タイトル 掲載ページ 機種 作者・開発元 ソース ダンプ パッチ 備考
工学社 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 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年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年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 です。
K_000
・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 は、上記にパッチをいくつか当てたものです。(詳細は後述)

K_001
・まずはオンメモリ版でサンプルプログラムをコンパイルしてみます。
・機種:FM-8、FM-7/NEW7/77、FM77AVシリーズ
・対応F-BASIC:V1.0、V2.0、V3.0
・プログラム:RT、K
・オンメモリ版では、Kコンパイラ本体が $2000〜 に居座っているため、
 あまり大きなソースをコンパイルすることができません。

K_002
・実行してみます。あっという間に実行完了します。

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 -+-------------------------------------+
K_006
・続いて、オンメモリ版の裏RAMコンパイルを試してしてみましょう。
・機種:FM-7/NEW7/77、FM77AVシリーズ
・対応F-BASIC:V3.0
・プログラム:RT、K、RELOC.K、EXEC.K
・事前準備として、Kコンパイラ本体を裏RAMへ転送します。$C000 は転送先の例です。

K_007
・次に、EXEC.K(裏RAMエグゼキュータ)をコンパイルだけしておきます。
・その後、CLEAR文 で使用メモリを拡大した後、ソースファイルを読み込ませます。
 単に裏RAMへ移すだけなので、コンパイラの使うワークエリアは元のアドレスに残ったままです。

K_008
・Kコンパイラの呼び出し方法が通常版とは異なり、先ほど事前にコンパイルしておいたエグゼキュータで呼び出します。
 アドレスを2回指定するので面倒ですね。
・無事コンパイルできました。

K_009
・オブジェクトコードは通常版と同じで $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 -+-------------------------------------+

K_005
・最後にファイル版でのコンパイル&実行です。
・その前に 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 に対応しています。

K_003
・それでは、ファイル版でコンパイルしてみましょう。
・機種:FM-8、FM-7/NEW7/77、FM77AVシリーズ
・対応F-BASIC:V1.0、V2.0、V3.0
・プログラム:RTF、KF、MAIN2

K_004
・問題なく実行できました。
・メモリマップはオンメモリ版とほぼ同じですので省略します。


★maruanさん秘蔵の、パッケージ版Kコンパイラ(V3.3)です。
KC33_000
・まずは外観です。
・よく姪botちゃんが紹介してるやつです。

KC33_001
・mauanさんにTAPEの中味を表示してもらいました。
・何と、RT と K の2つしか入ってない!
・RTF、KF は自分でパッチあてろ、と付属マニュアルに書いてあるそうです...orz

KC33_002
・mauanさんにコンパイルを実行してもらいました。
・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.3 TL/1コンパイラ

● 続いては、大西博さんによるTL/1コンパイラです。
こちらはアスキー誌で一世を風靡してました。オリジナルは大西さんによる6800版ですが、
PC-8001、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 のセットです。
TL1FM_00
・ファイル名については、ほとんど、はせりんが勝手に命名しています。
・裏RAM使用の有無、機種別で4種類のバイナリ本体と、裏RAMからロードするローダー3種類です。
・TL1LDR は、はせりんが勝手に作ったローダーです。機種判別(実際にはBASIC版数判別)を行って必要なバイナリをロードします。
 TL/1-PC のローダーの仕様と合わせて、PF4 でコンパイル、PF5 で実行、としてみました。
・SAMPLE も勝手バージョンです。
・Kコンパイラでは大規模ソースファイル対応でファイル版がリリースされていましたが、 TL/1ではそういうのがありません。TL/1-FMは比較的ソースエリアが狭いのですが、唯一(?)、 「分割コンパイル」がサポートされており、裏RAM使用と合わせてメモリの狭さを凌いでいます。

TL1FM_01
・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-+------------------+
TL1FM_02
・続いて、コンパイルしてみましょう。
・その前に、コンパイル対象の SAMPLE プログラムです。大した内容ではありません。

TL1FM_03
・まずは裏RAMを使用しないバージョンです。
・FM-7、FM-8で共通です。
・PF4 を押すと一瞬でコンパイルが完了します。
 オブジェクトは、ランタイムルーチンを含んだサイズで表示されます。
・PF5 を押して実行します。

TL1FM_04
・続いて、裏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 のローダーでも必要です。
 画面には一切指示が出ないので不親切と言えなくもないですが...

TL1FM_05
・次に、少し大きなプログラムをコンパイルしてみましょう。
・例として取り上げるのは、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を使用しないモードで!コンパイルします。[重要]

TL1FM_06
・コンパイルが無事終了しました。
・RENJU(連珠)では、2次元配列を別途確保する必要があり、&h3800-42FF をそれに当ててます。
 従って、実行前にメモリをクリアしてあげます。(CLEAR ,&h37FF)
・そして PF5 で実行です。
 (裏RAMモードだとオブジェクトと配列がかぶってしまうので...)

TL1FM_07
・先手か後手か、聞かれます。
・先手の方が有利ですが、敢えて後手で。

TL1FM_08
・COMPUTER は中央に打ってきます。

TL1FM_09
・今回は、たまたま勝てました!
・けっこう強いです。一時期はまってました...

参考文献
月刊アスキー 1981年1月号 (アスキー)
月刊アスキー 1981年3月号 (アスキー)
月刊アスキー 1982年10月号 (アスキー)
月刊アスキー 1984年4月号 (アスキー)
月刊アスキー 1984年5月号 (アスキー)
月刊アスキー 1984年6月号 (アスキー)
月刊アスキー 1984年7月号 (アスキー)

8.4 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版) に含まれるファイルです。
COMSOL_00
・けっこうたくさんのファイルがありますね。
・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"版 です。)

COMSOL_RM10
・read.me1 の中味です。(その1)
・COMPILE.L、compile.l は、それぞれファイル版、オンメモリ版のコンパイラ本体です。
・LINKER.L はリンカー本体です。
 説明文にはないですが、必要最低限の IOライブラリも含んでいます。
・COMPILE、LINK は、それぞれ、ファイル版コンパイラ、リンカーを呼び出す簡単なローダーです。
・SIZE は、バイナリファイルのサイズ表示と、メモリ上の最上位に配置した場合の先頭アドレス
 を教えてくれます。(フリーエリアを最大限確保するため)
・IOLIB.S、IOLIB.R は、それぞれ基本IOライブラリのソースファイル、リロケータブルライブラリです。
 上記の必要最低限の IOライブラリで済む場合にはこのライブラリは LINK不要です。

COMSOL_RM11
・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 をコンパイル&リンクして実行してみましょう。

COMSOL_12
・まずは GRDEMO.S の中味です。
・PROC/FUNC xxxx; EXTERNAL; となっているプロシジャ、ファンクションについては、 ライブラリのリンクが必要です。

COMSOL_13
・RUN"COMPILE でコンパイラを起動します。
・最初にソースファイルを指定します。

COMSOL_14
・1パス目のコンパイルがすぐに終了します。
・続いて、リロケータブルオブジェクトの出力ファイルを指定します。

COMSOL_16
・2パス目のコンパイルもすぐに終了します。
・続いて、RUN"LINK でリンカーを起動します。
・プリンタへ出力するか否か、メモリの上限、オブジェクトのロードアドレスを入力します。
・リンクするファイルを指定します。

COMSOL_17
・リンクしている様子です。
・外部参照が必要な PROC/FUNC が表示されるので、リンクライブラリを指定します。
・一度に1つのライブラリしかリンクできないので、繰り返します。

COMSOL_19
・リンクが無事完了しました。
・生成されたモジュール内のアドレスマップが表示されます。
・ご覧の通り、必要のないものまでリンクされてしまいます。
・最後に、生成されたモジュールを DISK に書き出します。

COMSOL_20
・生成されたモジュールを実行してみましょう。
・LOADM でロードする際、オフセットアドレスは必須です。
 さもないと 0番地にロードされてしまいます。
・ロード完了したら EXEC で実行します。
・実は、リンク直後にはメモリ内にオブジェクトがロードされたままなので、
 SAVE と LOADM を省略することができます。

COMSOL_21
・GRDEMO 起動直後です。
・楕円が6つ描かれます。

COMSOL_22
・しばらく経った後の状況です。
・これが意図したものなのかは不明です。
・放っておくと、延々と続くので、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 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 のシステムディスクを起動してみたところです。
DRACOC_00
・青地に水色文字が斬新です。
・画面には特に出ていませんが、CRUN コマンドが拡張されています。

# Draco C のディスクには通常バージョンの F-BASIC V3.0 の DISK CODE が含まれています。
# (ただし "821001"版 です。)


★Draco C コンパイラ V2.0 に含まれるファイルです。
DRACOC_01
・けっこうたくさんのファイルがありますね。
・この画面で注目していただきたいのは、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詳細編(その2:デモ画面集)を覗いてみる
FM77AVシリーズ システムディスク編を覗いてみる
FM77AVシリーズ デモ編を覗いてみる
CP/M-80編を覗いてみる
OS-9編を覗いてみる
Flex編を覗いてみる
F-BASIC ファイルシステム(およびその上位互換)上に構築されたOS、開発システム
FM-7/8シリーズ用プログラミング言語とその処理系
番外編(その1:ナウシカベンチマークの謎)を覗いてみる
番外編(その2:勝手に誤記修正編)を覗いてみる
番外編(その3:6809用MMU考察)を覗いてみる
番外編(その4:FM-77 謎のS1スイッチ)を覗いてみる
番外編(その5:FM-7,8シリーズのROM一覧)を覗いてみる
番外編(その6:FM-77用拡張メモリ他について)を覗いてみる
番外編(その7:FM-8/7/77/77AVシリーズの微妙な非互換性)を覗いてみる
番外編(その11:FM-11,16シリーズのROM一覧)を覗いてみる
緊急特集:MB22603の秘密 を覗いてみる
緊急特集2:FM-8ブートROMの秘密 を覗いてみる
超番外編:レベル3BASICとF-BASIC を覗いてみる
入り口ページに戻る

ご意見、ご要望はこちらまで(笑)
thasegaw@hotmail.com