2019年5月8日水曜日

6802基板でGAME68コンパイラを走らせる

自作6802基板でGAME68コンパイラが動作しました


前回のブログで8080SBCでGAME80インタプリタを走らせることができたと報告しましたが、それに関連して、skyriverさんがCP/M上でGAME80コンパイラを動作させたとの連絡をいただきました。そこで、私もskyriverさんのブログを参考にしてGAME80コンパイラを走らせることができました。
中島聡さんが作られたこのGAME80コンパイラは、TK-80BSの他にもいろいろなマシンに移植されましたが、残念ながら68系にはなかなか移植されませんでした。
そんな中、ついにASCII誌1981年5月号で松島義明さんがH68用のGAME68コンパイラを発表されました。
私はGAME3を使用していたこともあり、このコンパイラを動かしたかったのですが、残念ながら当時の手作りマイコンでは動作させることはできませんでした。

しかし、現在の自作の6802基板なら可能ではないかと思い、移植してみることにしました。
現在の自作6802基板では既にGAME3が動作していますので、保存してあったASCII誌から手入力してみました。ASCII誌がない方も、作成者がブログで公開されていますので心配はありません。(後述します)

[1]必要なファイルを作成する


入力したファイルは、
・コンパイラのソース(GAME3のプログラム形式 $3E00~)
・リロケータブルサブルーチンパッケージ(バイナリ形式 $3C80~$3DAA)
・サブルーチンパッケージリロケータ(GAME3のプログラム形式 $3C00~)
の3つです。
私はこの3つを1つにまとめたファイルを作り、GAME3インタプリタと共にあらかじめ読み込ませる形で使用しています。ただし、GAME3のプログラムはメモリ中では行番号が2バイトバイナリに、行末の改行コードは$00に変換され、ファイル末には$FFが追加された形式で格納されますので、プログラムリストを予め変換しておく必要があります。
手順を下に示します。

コンパイラの作成手順

変換作業はWindows上で、Chglno.exeとCvtMotHex.exeを用いて行います。
例としてGAME3インタプリタの開発者の大西さんが用意されたサンプルであるACURVEというプログラムの処理を下に示します。


処理前のソースプログラム


Chglno.exeで変換します



処理後のソースプログラム


アドレスを指定してHEXファイルに変換して出来上がり


[2]コンパイルの手順


(1)GAME3インタプリタとGAME68CAコンパイラをメモリに読み込みます。
(2)GAME3インタプリタを起動します。
(3)ソースを読み込むアドレスを指定します。
    例 =$1500
(4)コンパイルしたいプログラムを入力します。
    手入力しても良いですが、コンパイラソースと同様に処理してあればファイル
    から読み込めます
    例 GAME3の最初の例である ACURVE
(5)コンパイラを起動します。
   最初に読み込んであるので、そのアドレス$3E00を指定するだけです。
    =$3E00 とアドレス指定して #=1 で起動します。
(6)以下はASCII誌の説明通りに進めます。
   GAME:に対しては $1500
   SUB:に対しては $2100
   STAT:に対しては$222B
   WORK:に対しては$1900
   STAC:に対しては$2080
   と入力するとコンパイルが始まります。
(7)サブルーチンを$2100からに移動します。
   =$3C00 とアドレス指定して #=1 で起動します。

[3]コンパイルしたマシン語を実行する


先頭の$2100 からがサブルーチンパッケージで、実行開始アドレスは $222B
   ですのでGAMEのダイレクトモードで >=$222B で実行できます。

ちょっと見苦しいですが、画面のテキストのコピーを下に示します。



+++OLOAD GAME3.CMD     FLEXに保存してあるファイルをメモリに
+++OLOAD GAME68CA.BIN   読み込んで
+++OLOAD ACURVE.BIN
+++

M6800 MONITOR Ver6.1     いったんモニタに戻って

>G 103             GAME3を起動(ソースが既にメモリ中にあるのでホットスタート)

*READY

:=$1500            コンパイルするプログラムのアドレスに

*READY            変更すると

:0               確かにソースが読み込まれている

   70***************************
   80*    A CURVE
   90***************************
  100 X=7 Y=0 Z=2
  110 Y=Y+Z X=X+Y
  120 ;=+Y=6 Z=-Z
  130 J=1,32
  140 $=(J=X*"*")+(J<>X*".")
  150 @=J+1 / #=110
  160**************************

*READY

:=$3E00            コンパイラのアドレスに変更して

*READY

:#=1              コンパイラを起動する

GAME:$1500          (入力)

48 BYT (10LINE)

SUB :$2100          (入力)

 END 222A

STAT:$222B          (入力)

WORK:$1900         (入力)

STAC:$2080          (入力) コンパイルが始まる

   70     222B     1500
   80     222B     151E
   90     222B     152D
  100     222B     154B
  110     223F     155A
  120     2257     1569
  130     2277     1578
  140     2287     1582
  150     22BC     159C
  160     22DC     15AD
   70     222B     1500
   80     222B     151E
   90     222B     152D
  100     222B     154B
  110     223F     155A
  120     2257     1569
2277
  130     2277     1578
  140     2287     1582
  150     22BC     159C
223F
  160     22DC     15AD
 SIZE: 177(222B-22DB)

END             正常に終了

*READY

:=$3C00           サブルーチン移動プログラムのアドレスに変更して

*READY

:#=1             実行 (資料ではここでアドレスを入力することに

                    なっているが、問い合わせてこない)

*READY            これでコンパイル&サブルーチン移動が完了

:>=$222B          できたマシン語を実行

........*.......................
............*...................
..................*.............
......................*.........
........................*.......
........................*.......
......................*.........
..................*.............
............*...................
........*.......................
......*.........................
......*.........................
........*.......................
............*...................

----------------------------------- 以上 -------------------------------------------

[4]終わりに


説明不足で良く分からないところがあったと思いますが、心配ありません。
何と、GAME68コンパイラを開発された方が、ブログで資料を公開されています。
詳しくはそちらを参照ください。
開発された方は、このコンパイラを仕事にも使われていたとのこと、スゴイです。

なお、開発された方が許可してくださいましたので、私が誌面から入力したコンパイラソース等のリストをOneDriveに公開いたします。入力ミスは多分ないと思いますので、どうぞご利用ください。また、使用したツールソフト(Chglno.exe, CvtMotHexBin.exe)も同梱しておきます。

2 件のコメント:

  1. こんにちは
    GAME68とコンパイラが動いたのですね・・素晴らしい!
    コンパイラの作者の松原さんのサイトは私も連休中にGAME言語の関連情報収集時に見つけてコメントに書いてあった

    「そうGAME言語をPICで動かしたいですね。 これも誰かやってましたね。」

    を見つけ思わず「私で~す」とコメントしようかとも思ったのですが、自己主張しているだけのコメントのようになってしまいそうだったので思いとどまりましたw

     パソコン黎明期のあの頃に関してはネット上にもあまり情報がなく、国会図書館で資料をコピーし手打ちで再現するのは敷居が高いですので、ネット上にファイルが公開され追体験できるようになるのはうれしい限りです。
     因みに私が持っていたGAME80コンパイラの資料は当時コピーしたのをたまたま持っていたもので縮小コピーで黄ばんでいたりするので文字が判別し辛く、一から全て入れるのは辛い状態のものです。

    返信削除
    返信
    1. 早速のコメントありがとうございます。昔から動かしたくて資料だけは保存してあったのですが、ようやく動かせて嬉しいです。
      また、入力の苦労を皆がしなければならないわけではないので、公開させていただくのはとても有難いですね。

      昔のパソコン誌はほとんどすべて捨ててしまったので、今になって資料を探し回っている状態です。エンサイクロペディアアスキーだけはVol.1~8までは所有しています。近くの国立大学の図書館にはVol.13まであり、借りてコピーすることができます。国立大学の図書館は市民に開放することになっているようで、なかなか便利です。

      もう一つの懸案はTL/1の6809版を動かすことです。TL/1の6809版をOS-9で動かそうとしている方がおられるので、その資料を元に何とかしたいと思っているのですが、これも私にとってはなかなか難しいテーマです。

      削除