ASSIST09で、Hello World!2023年10月29日 08:15

モトローラのMC6809を使った自作マイコン"MyOwn6809"は、Assist09というモトローラが発表した モニタープログラムを搭載しています。Assist09には、12のサービスルーチンがあります。

  1. INCHP 文字入力
  2. OUTCH 文字出力
  3. PDATA1 文字列送出
  4. PDATA 改行と文字列送出
  5. OUT2HS 1バイトの16進化
  6. OUT4HS 1ワードの16進化
  7. PCRLF 改行
  8. SPACE スペース送出
  9. MONITOR Assist09の起動
  10. VCTRSW ベクタ・スワップ
  11. BRKPT ユーザ・ブレイク・ポイント
  12. 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"がプログラムカウンタ相対を指定しています。