ASSIST09で、Hello World! ― 2023年10月29日 08:15
モトローラのMC6809を使った自作マイコン"MyOwn6809"は、Assist09というモトローラが発表した モニタープログラムを搭載しています。Assist09には、12のサービスルーチンがあります。
- INCHP 文字入力
- OUTCH 文字出力
- PDATA1 文字列送出
- PDATA 改行と文字列送出
- OUT2HS 1バイトの16進化
- OUT4HS 1ワードの16進化
- PCRLF 改行
- SPACE スペース送出
- MONITOR Assist09の起動
- VCTRSW ベクタ・スワップ
- BRKPT ユーザ・ブレイク・ポイント
- PAUSE プログラム・ブレークとチェック
これらのサービスを使うことで、プログラムの開発をスムーズに進めることができます。
いつもの Hello World!を作ってみました。
* HELLO.ASM -- SAY "HELLO WORLD!" * ASSIST09 SERVICE ENTRY CODE PDATA EQU 3 PUT CR/LF AND STRING TO CONSOLE * CONSTANT VALUES EOT EQU $04 END OF TEXT CR EQU $0D CARIGE RETURN LF EQU $0A LINE FEED RAMTOP EQU $C000 * ORG RAMTOP MAIN: LEAX HELLO,PCR SWI FCB PDATA RTS * HELLO: FCC 'HELLO WORLD!' FCB CR,LF,EOT * END
このプログラムは、RAMエリアの先頭、C000からロードするように作ってあります。このようにして、実行します。
このプログラムには、プログラムをどのような位置にロードしても実行できるように、おまじないをかけています。
論より証拠、C000からロードして、更にC020からにロードして実行してみました。
C020から実行しても正常に動いています。 いわゆる「リロケータブル」なプログラムになっています。変数のアドレスを指定するのに、プログラムカウンタの値を基準にして 指定しているので、このようなことができます。プログラムカウンタ相対です。
このプログラム中、出力文字列のアドレスを指定する部分、
LEAX HELLO,PCRで、"PCR"がプログラムカウンタ相対を指定しています。
最近のコメント