モトローラ6800CPUボード(SBC6800)で電大版TinyBASICを動かす (7) アセンブリリスト入手とクロスアセンブラ

ダンプリスト版の電大版TinyBASICは動いたので、EPROMへ書き込んでフリーエリアを確保したいと思います。** ただ、ソースリストが無いとアドレスを変更するのは至難の業です。

ソースリストの入手と打ち込み

幸い 電大版TinyBASICのソースリストは昔々のbit誌に掲載されていたという情報をキャッチしました。

みなさん詳しいなぁ….

国立国会図書館へbit誌の遠隔複写を依頼

古風平凡さんのページで電大版TinyBASICのアセンブラソースは「bit誌 1978年8月(Vol.10,No.8) P52-P57 に掲載されている」という記述がありました。「ああ、昔の雑誌は手に入らないよなぁ」と半ば諦めていたところ…

日本中の書物があるという国立国会図書館で「遠隔複写」というサービスがあるというのを知りました。

ちなみに、関東圏などに住んでいて国立国会図書館へ出向くことができるなら、館内閲覧とか複写が可能みたいです。

便利すぎる!国立国会図書館の遠隔複写サービス(コピー)を利用した結果

上記のリンク先の手順で国立国会図書館のページで検索してみたところ、なんと該当のbit誌がちゃんとありまして、しかも電子化されていました。ただし、著作権保護の観点からからインターネット閲覧はNG。でも目次が詳細に確認できました。

※目次は電子化されていないと分からない模様です。bit誌はラッキーでした。

国立国会図書館にIDを登録し、bit誌の該当の箇所や旧いASCII誌のVTLを使ったスタートレック(!)の記事など20ページ程度をインターネットで「遠隔複写」として月曜日に依頼。木曜日夕方に複写完了&発送のメールが届きまして その週末土日には記事のコピーが手に入りました!! うれしい!!

地方在住者には非常に嬉しいシステムです。

A3見開きでコピーしてくれたものがはいってまして枚数は10枚となってました。A3封筒のなかに請求書も同梱されてましてコピー代は10枚分。手数料/送料入れても1,000円未満でした。大昔の雑誌の一部が手軽に手に入ったのはビックリでした。

今回は事前に目次/ページNo.がわかったのでラッキーでしたが、複写したいページが不明等の場合調査依頼をお願いすることも可能のようです。

代金はコンビニ/郵便局等々で支払可能で、わたしは郵便局のATMから支払いました。

郵便局設置のATMだと振込用紙が使えるものがあって、窓口が開いていない土日でも振込できて便利です。

アセンブルリストの打ち込み

さて入手したアセンブルリストをソース・ファイルとしてMacで入力します。

ちょっとズルをしてOCR出来ないものかといろいろと試しましたが、やはりダンプリストのときと同じで当時のプリンタ印刷品質の悪さから結局全部手入力しても変わらないと思い、またも手入力修行に励みました。…orz

きっと、もっと精度の良いOCRがあるとこの作業が軽減できるはず。

PC-8001とかFM-7とかのダンプリスト入力に特化したOCRを開発されている方もいらっしゃると聞いてますので、老眼をショボシヲョボさせながら入力しなくて良い時代がもうすぐそこに…

手入力する意義としては、モトローラ6800CPUのニーモニックの使い方がジワジワと分かってくるというところがあるかもしれません。(リストを見ながら入力したからと言ってアセンブラプログラムが即読めるようにはならないですが….)

文字が判読しづらい部分も、アセンブルリストであれば16進機械語コードが併記されていますので、無味乾燥な16進ダンプリストを入力するよりも判定が容易です。

クロスアセンブラの入手とアセンブル実行/モトローラSフォーマットへの変換

入力したアセンブリソースを親機であるMac上でアセンブリして モトローラSフォーマットのファイルを作りたいと思います。

本来ならモトローラ6800CPUが乗ったSBC6800ボードでセルフアセンブリできると良いのですが、メモリーが8kBしか無いということもあり、昔の方々がミニコンで行っていたクロスアセンブリを現代はパソコン(PC/Mac)上で実施であります。

クロスアセンブラの入手

いろいろなページで紹介されているクロスアセンブラは、アークピットのアセンブラ~~(たぶんWebアーカイブページ)~~でDOS版です。DOSのプログラムはWinXPやWin2000であればOS互換プロンプトで動く模様。

アークピットのアセンブラ

【4/17修正】

アークピットさんのアセンブラ掲載ページURLをただしいものへ変更しました。失礼しました。**

今後を考えて(今後があるのか??) Mac上でアセンブルしてみたいて思います。

わりと最近のWindowsやOS/2(!!)、Linux/Mac等のUNIXマシンで動くクロスアセンブラがありました。

The Macroassembler AS

紹介していただいているページはこちら → 6809マイコン – HD63C09載せかえ

クロスアセンブラのビルド

The Macroassembler ASのクロスアセンブラはWindowsについてはバイナリ配布されていますがUNIX系はソースからビルドする必要があります。

  1. C言語のソースが配布されていますので、Mac上で展開します。
  2. 展開したソースの直下に ”INSTALL”というファイルがありますので熟読します。
  3. makeするためには”Makefile.def”というファイルが必要の模様。
  • {src_dir}/Makefile.def-samples/Makefile.def-x86_64-osx というファイルがあったのでソースディレクトリへMakefile.defという名前でCOPY
  1. makeしてmake installで使えるようになりました!

アセンブルリストの修正点

The Macroassembler ASはちょっと癖がありまして、モトローラのアセンブラの書式とちょっと違います。以下の部分を手直しする必要がありました。

修正点 修正内容
コメント モトローラ・アセンブラのコメントは 行頭の”*”で一行まるごとコメントか、ニーモニックコードにつづいて書かれています。 マクロアセンブラASはコメントはすべてセミコロン “;”で始まる必要があるので修正が必要です。 なんとなくインテルやザイログのニーモニックっぽいですね。
文字/文字列定数の書き方(FDB,FCCなど) モトローラ・アセンブラでは文字定数(FDBなど)は #’A 、文字列定数(FCC)は /ABC/ のような書き方ですが、それぞれ #’A’(閉じるクォーテーションが必要)や ‘ABC’と書く必要があります。
NAM疑似命令は無い アセンブリソースの頭についている NAM疑似命令はありませんのでコメントアウトしてください。
インデックスレジスタの参照先オフセットは省略しない MIKBUGのソースにあったんですが、 “STAA X” みたいにインデクス参照の際のオフセット省略(インデクスレジスタのポインタ先へストアとか…)は、このアセンブラでは許してくれませんでした。 “STAA 0,X”みたいに ゼロを明示する必要があります。 この記述はこっちのほうが自然ですね…

アセンブルの実行/モトローラSフォーマットへの変換

アセンブルリストの修正を行ったら、コマンドラインからクロスアセンブラを起動してアセンブルを実行します。実行コマンドは以下になります。

-Lオプションは アセンブリリスト(xxx.LST)ファイルを作成するオプションでアセンブリエラーが出た場合も場所がわかりやすいのでおすすめです。

$ asl -cpu 6800 -L xxxx.ASM

アセンブリがうまくいくと xxx.p というバイナリのオブジェクトが生成されます。これをモトローラSフォーマットテキストへ変換したいので、続いて以下のコマンドを実行します。

$ p2hex -r\$-\$ -F Moto XXXX.p

-rはアドレスを指定するパラメーターで、-Fはフォーマットを指定します。”Moto”だとモトローラSフォーマット。”Intel”だとインテルHEX形式です。

※パラメーターの”Moto”を”Mot”だと思いこんで、しばらくハマっていたのは秘密です。

これで電大版TinyBASICのソースから実行用のオブジェクトが生成できました。

これをダンプリストから作った際と同様にMIKBUGのLコマンドに読み込ませてGコマンドで起動すれば BASICが稼働します。

次は、MIKBUGやVTL言語(スタンドアロン)のオブジェクトコードとあわせてEEPROMへ焼き込みをしてみたいと思います。