マイクロコンピュータメーカーのSWTPの機関誌で仕様とソースコードが公開され普及したBASICです。

ソースファイルの取得

以下のWEBページで紹介されており、上記の機関誌をPDF化した文書や、ソースコード、ソースコードのバグ修正情報など公開されています。

このページでは、Micro Basic は2進化10進数を使用していると書かれていますが、それは、次の節で紹介するMicroBasic Plusと間違えたものと思われます。Micro Basicは他のTinyBasicと同様に2バイトの2進整数を使用しています。

このBASICもTinyBasic に分類されるタイプの整数型BASICですが、コードサイズが3KBを超える程度で大きめなので、TinyではなくMicroと呼ばれているようです。

プログラムの修正とアセンブル

MicroBasicの移植法の概要を以下に示します。

  1. Source Code (27k TXT)というリンクで、Micro.txtという名前でソースプログラムが公開されているのでダウンロードします。
  2. ソースプログラムを修正・アセンブルするために、拡張子をASMに変更します。
  3. まずソースプログラムをアセンブルして、エラーを確認し、図\ref{fig:mb13-modify}の修正を行います。
  4. WEBのページに書かれている「ソースファイルの修正箇所」の3行の修正を行います。

アークピットのクロスアセンブラを使用してソースプログラムをアセンブルする例を以下に示します。

% msdos x6801 /LS Micro.ASM,Micro.SREC,Micro.LST;

X6801でのアセンブル

拡張子を変えただけのMicro.ASMをアセンブルすると、ブランチ先ラベルの参照で1か所エラーが出ますが、それ以外はなんとエラーなしでアセンブルできてしまいます。

ブランチ先ラベルの誤りは下記リストの上側の様な記述が156行にあります。

このラベル誤りを下側の様に修正します。

        BNE KEYBD11REC
              V
        BNE KEYBD1

ブランチ先ラベルの誤りと修正

これで、まずはエラーなしのソースプログラムになりました。

次に、WEBページに示されている「ソースファイルの修正箇所」の3行の修正を行います。

060C 	26 F9 	BNE NXTL12
0961 	81 1E 	PRINT4 CMP A #$1E
0BAE 	E7 00 	STA B 0,X

ソースファイルの修正箇所

最後に、BREAKルーチンの処理を無効にします。

もともとのBREAKルーチンはPIAをモニタするもので、PIAを使用していない 6800-COREでは正しく動きません。

「BREAKの無効化」のように、単にサブルーチンリターンするようにします。

BREAK   JMP BREAK1
          V
BREAK   RTS

BREAKの無効化

なお、このプログラムには、以下のような記述がファイルの最後にあるので、このプログラムのSレコードファイルを読み込むとプログラムの実行開始アドレスの$0100が$A048に設定され、ファイイルの読み込み後は単純にGコマンドを入力すれば、BASICが起動されるようになっています。

        ORG     $A048
        FDB     PROGM

実行開始番地のMIKBUGへの登録

改良

もともとのBREAKルーチンはPIAをモニタするもので、PIAを使用していない 6800-COREでは役に立ちません。

ACIAの入力をモニタして、CTRL-Cが押された際にプログラムを中断できるように変更する例を以下に示します。

BREAK
        PSHA
        LDAA	$CC00
        ANDA	#$01
        BEQ	BREAK1
        LDAA	$CC01
        CMP A	#$03	; CTRL-C
        BNE	BREAK1
        JMP	READY

BREAK1	PULA
        RTS

BREAKルーチンの置き換え

WEBページに示されているほかに、プログラムの冒頭部分の作業領域の値を以下のように修正します。

BACKSP  FCB $08	; 一文字削除をBSにする
MEMEND  FDB $8FFF	; 作業領域の最後

削除キーと作業領域の変更

KEYB55  CMP A BACKSP
        BNE KEYBD3
        CPX #BUFFER
        BEQ KEYBD1
        DEX
        LDA A #' '	;
        BSR OUTCH	;
        LDA A #$08	;
        BSR OUTCH	;
        BRA KEYBD1

BREAKルーチンの置き換え