● 実験テーマ112

「MachiKania type M BASICシステム 試用実験」 
ケンケンさん製作の、PIC32MX370F512H_MachiKania type Mの、P板を入手したので、試用実験をしてみました。)

以下、この実験の顛末記です。

■ 2018.11.27 (序文)
  ・
今から、35年前(1983年)の話ですが、私は、産業計測器関連の会社勤めのかたわら、
   趣味で、ハンド・アセンブルと、BASICプログラム作成に熱中していました。
   ある日、自分で、BASICシステムを製作出来ないものかと思い、関連の技術本を探したところ、
   神崎康宏 著の、「作りながら学ぶ マイコン設計トレーニング」という本に出合いました。
   そこに載っていた、東芝マイクロコンピュータの、「EX-80BS LEVEL T・U BASIC」(ハード基板:TLCS-80A)
   の、BASIC ROM(マスクROM)を、別ハードの、Z80を使った、BASICシステムに移植する記事を参考に、
   当初、会社で使用していた、オリジナルのユニバーサル基板(数10ピンのプリンシャ接栓が、2つ付いた、結構大きな基板)
   を譲り受け、それに、システム・ハードを構築していきました。当時は全て、ラッピング・ワイヤによる配線で実装しました。

   記憶媒体は、カセットテープで、カンサスシティ・スタンダードという回路を採用していました。
   それに、自作の、BASICプログラムを組んでは、SAVEして楽しんでいました。
   当時の写真があればよかったのですが、数年前に、部屋を整理していた時に、廃棄でゴミにだしてしまいまして、
   主要IC(Z80や周辺IC・DRAM等)は外して手元に有りますが、それ以外は残っていません。

   そんな当時作った、プログラムをまた実行したくなり、前から気になっいていた、ケンケンさん設計・製作の、
   
PIC32MX370F512H_MachiKania type Mの、P板を、注文して、KM-BASICで、実行したらどうなるか興味がわき、
   このテーマに決めました。

  ・キットにするか、P板のみ購入+部品は個人で集めるにするか?
  → キット:3785円
     P板のみ購入+部品は個人で集める:概算=3200円

  ※ PIC変換基板実装版のピンコネクタは、背の低いのを使用したいのもあり、P板のみ購入+部品は個人で集めるにした。
     尚、PIC変換基板実装版コネクタ付きは手持ち有り

  ※ パーツは全て手配済
     秋月分:2215円
     マルツ分:799円
     P板:400円(これは未だメール待ち)
     合計:3414円

  ※ P板のみ購入は送料込み:400円
     amazonギフト券をケンケンさんに送れば、手数料はかからないので利用する。

     金額 1枚 400円(送料込み)
     支払い方法 下記いずれかをお選びいただけます
     ・Amazonギフト券(Eメールタイプ) (手数料不要で24時間いつでも簡単に購入できるのでお勧めです)
     ・銀行振り込み
       普通郵便で送ります。送付先は日本国内に限定します。
      お申し込みいただければなるべく1日以内に返信するようにいたしますが、普通の会社員なので
      平日は夜遅くしか返信できません。
      もし3日以上返信がなければ、督促のご連絡をください。

  → 購入希望メール済→ 3日以上返信が来るはず。


■ 2018.11.28
  ・
P板のみ購入は送料込み:400円
   amazonギフト券をケンケンさんに送付済
  ・SDカードの準備と必要なファイルコピー終了
  ・_V4 P板再生産の件連絡来ないので、MachiKania type M BASICシステムについてのドキュメントを学習しておく。
   自作プログラムのために。


■ 2018.11.30
  ・ケンケンさんから、P板到着



  ・実装の前に、液晶モニタを選ぶ。
   車載用を想定した、4.3インチ液晶モニタが数社から販売されている。
   安価なのだと、aitendo の、1500円のモニタ:MNT043A12V-Bだが、別途ACアダプタが必要。
   少し高いが、秋月の、ACアダプタ付き:SJ-4238 2700円が良さそう。
   これに決め発注した。


■ 2018.11.31
  ・部品実装完了


■ 2018.12.3
  ・動作確認
    @ 電源チェック
        PIC未実装       PIC実装 BOOT LOADER書込み状態
   -------------------+--------------------------------------------
   +5V:   5.22V         5.21V 
   +VDD:  3.29V         3.32V

    A PICkit3+MPLAB IPEにて、bootloader.hex書込み
       最初、ICPSコネクタ・ランドとの接触が悪かったのか、書込みFAILになっていたが、基板をさらに
       斜めにして、接触を良くしたら、正常に書込めた。



     B 稼働時の消費電流 181204
        BASリスト表示状態:約100mA
        レイトレースデモLCD実行時:約130mA

        ※ ハードはOK→  key board・タクトsw・video out・audio out
        ※ ACアダプタから供給した場合、そのノイズの影響が気になった。
          PCからのノイズかもしれないが? 文字表示の水平同期がずれたりする。
            バッテリー入力で改善された。
          → PCの、HDDアクセス・ランプの動きと同期している模様。PCからのノイズの影響が考えられる。
             HDDアクセスしてない時は、ほぼOKに見える。    181204


■ 2018.12.4
  ・続動作確認
   一通リ、SDに収録されている、BAS及び、HEXファイルをロード・実行出来た。
   液晶表示も綺麗。
   特に、レイトレースデモは、素晴らしい。

  ・SDカードの中身は以下です。
   @ 標準で入っていたもの
      MACHIKAM.HEX:MachiKania type M BASICシステム本体
      MACHIKAM.INI: MachiKania BASICシステムの初期設定ファイル

      MUSIC.BAS:MUSIC命令使用のサンプルプログラム
      SOUND.BAS:SOUND命令使用のサンプルプログラム
      BLOCK.BAS:初代MachiKania用ブロック崩しゲーム
      INVADE.BAS:MachiKania type Z用インベーダーゲーム
      3DWAVE.BAS:波紋の3Dグラフィック
      WFRAME.BAS:MachiKania type Z用ワイヤーフレームグラフィック

      BREAK370.HEX:C言語で作成したブロック崩しゲーム
      DISPGIF.HEX:C言語で作成したGIF画像表示デモ
      HAKOI370.HEX:C言語で作成したパズルゲーム箱入り娘
      PAC370.HEX:C言語で作成したパックマン
      TETRI370.HEX:C言語で作成したテトリス
      VELUDDA.HEX:C言語で作成したオリジナルゲーム

      その他GIF画像ファイル(DISPGIF.HEXで使用)

    A 自分で追加したもの
       RND_CIR.BAS:ケンケンHP掲載のサンプルを打ち込んだもの:ランダム・サークル描画

  ・秋月のDIP変換基板に実装済版を使用したが、背の低い、ICソケットコネクタIC連結ピンの組合せでも
   QVGAブレイクアウト基板との、クリアランスが取り切れず、ぶつかってしまうことが判明。
   IC連結ピン側をさらに、ベース部の背が低い細ピンタイプに変更すれば良さそうだが、同じICピンの
   組合せより勘合が緩くなる可能性があるのでやめた。
   秋月のDIP変換基板に実装された、ピンコネクタの出っ張りが、3mmと結構出てる。
   これを約2.5mmカットしてクリアランスを稼ぐことにした。
   これでも、QVGAブレイクアウト基板側にある、LED入力電圧選択:5V/3.3Vジャンパの半田ブリッジの盛り付け部
   と僅かに当たってしまうため、ここも出っ張りが最小になるように細いメッキ線でショートするように
   修正で、なんとかなった。


■ 2018.12.5
  ・大昔、熱中していた、東芝の、ベーシック・システム:EX-80BSの、ブログラム例題集の本が
   押し入れに眠っていたので、久々に取り出して、その中から、数題チョイスし、
   KM-BASICに移植してみようと思い立ちました。

    @ 「BLACK & WHITE」→ 上手く行く。
       ハートキャラクタによる一松模様の表示デモです。
       表示倍率を、x1〜x10まで変化させながら、一松模様を表示します。
       以下に表示例をアップしました。


■ 2018.12.6〜 2018.12.11
  ・もう一つは、
    A 「CALENDER」
       西暦の年と月を入力すると、その月のカレンダー表が表示されるプログラムです。
       以下に、実行・表示例(2018年12月のカレンダー)をアップしました。
       下段に表示されている、"NEXT MONTH ONCE.1 REPEAT.2"ですが、
       KEYボードから、'1'を入力すると、次の月のカレンダーが表示され、
       '2'を入力すると、月毎のカレンダーを、次々に繰返し表示します。



     <移植時、気が付いたメモ・KM-BASICのポイント整理>
      ・KM-BASIC 独特のステートメント記述(自分でも気が付きましたが、WEBでも解説がありました。)
       @ FOR / NEXT
          NEXT には変数を付けない
       A INPUT$()
          INPUT 同様に入力を受け付けますが、関数の扱いです。文字列のみが対象です。
          左の文字列表示(プロンプト)はないため、必要な場合は PRINT を用いて下さい。 

          INPUT A$ 
            ↓
          PRINT "?";
          A$=INPUT$() 

          数値を入力したい場合は INPUT$ で入力を行った文字列変数を 
          VAL で数値に変換します。

       B READ()・READ#()・READ$()
          関数の扱いです。 

          READ A,B,C 
            ↓ 
          A=READ():B=READ():C=READ() 

          KM-1200 より実数型・文字型を扱える READ#・READ$ があります。 
       C LABEL xxx
          xxxは、英数字6文字以内の文字列
       D RESTORE xxx
          DATA読出し開始位置を指定
       E DATA xxx,yyy,.....
          データ列を整数値もしくは文字列で指定する。
       F READ()
          DATA文の後から、一つずつ、データ(32bit整数値)を読み出す。但し関数扱い。

       G 変数の値を評価して、それぞれの、LABEL行に、ジャンプする、GOTO文(EX-80BSでは、ON A GOTO 行番号1, 2, 3・・・)
          は、KM-BASICには用意されてないようです。
          IF文で別途、分岐処理が必要になる。

       ➈ 変数の扱い
         ・変数名について
          特に指定しなければ、変数名はA〜Zのアルファベット1文字のみとなります。
          USEVAR命令で宣言することで6文字までの英数を使用することができます。
         ・変数の型について
          整数型、文字列型、実数型があります。変数名の後ろに付ける記号で区別されます。
           a. 整数型
             変数名の後ろに記号がない場合、整数型変数となります。
             32ビット符号付整数で-2147483648〜+2147483647を表すことができます。
            <使用例>
             A=123
           b. 文字列型
             変数名の後ろに$を付けると文字列型変数となります。
            <使用例>
             A$="XYZ"
           c. 実数型
              変数名の後ろに#を付けると、浮動小数点の実数型変数となります。
              32ビットの単精度です。
            <使用例>
             A#=3.14159

       I デバッグ方法
          ブロック毎との動作チェックする時は、適時、ENDを挿入すれば、そこまでの
          コンパイルをしてくれるので、そこまでのエラー有無のチェックと動作確認が出来る。

       ・MachiKaniaでのプログラムの実行方法と終了方法
       F4キー(RUN)で実行します。
       END命令で終了します。
       強制終了する場合、[Ctrl]+[Break]キーを押します。
       終了しない場合は、基板上の[UP][DOWN][START][FIRE]ボタンを同時に押します。


■ 2018.12.25
  ・KM-BASICは、C言語と同じように、構造化プログラミングに対応しているし、コンパイラなので
   確かに高速です。とてもよいですね。
   このような、すばらしいハード+ソフトを提供してくださった、ケンケンさんに、感謝です。
   今回の移植に際して、なるべく、GOTO文は使わないように心がけましたが、BASICなんで気楽に
   使ってしまってる個所も多々あります。もう少し整理すれば、よりスマートになると思っています。
   今度は、大昔作った、音楽関係の、BASICソフトを、移植したいと考えていますが、どうなることやら・・・


<最終BASICソース>
 ・こちらから、どうぞ→ BLK_&_WH.BAS : BLACK & WHITE
                 CALENDER.BAS : カレンダー


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ113へ →