2018年12月20日木曜日

SBC6800+SBC-IOのサンプルプログラム(3)TEK4010 Emulation

SBC6800のVRAM出力をTEK4010 Emulationでシミュレーションする

【当Blogのプログラムファイル置き棚のリンク先】


1. 当Blogの環境と条件
 ★PC:
  ・ TeraTerm Setup
    - Terminal
     New line Receive  : AUTOまたは CRのどちらでも
    - Serial port
      Transmit delay :0msec/char 100ms/line
 ★SBC6800:
  ・ RAM 32KB (UM61256FK-15)
  ・ ROM  8KB  (AT28C256)
    NAKAMOZU TINY BASIC ntbmixdV9.zipのBINファイル
 ★SBC-IO:
  ・ RAM 16KB (HM628128ALP-7)

2. Tera Term TEK4010のグラフィックモードのデモプログラム
 *TEKemuV7.S をロードした後、BASICでTEKTESTV7.txtを走らせる。
  シリアル通信が9600baudなので描画速度は尺取虫並みである。



 当BlogのNAKAMOZU TINY BASIC は下記の右のMEMORY MAP に示すように、$4000-$5FFFをVRAMに割当てている。ROMの制御ルーチンでTEXTやグラフィックが書き込める。現在はこの領域をVIDEO出力する方法が無いので、Tera TermのTEK 4010 Emulationを使って読み出してみた。


以上




2018年12月14日金曜日

SBC6800で動作するTRACE機能のあるROM MONITOR

組込み式マイコン用として開発されたMONITORを試す


🔁SBC6800単独で動作可能🔁
Austoralia TECHSEARCH社製。同国のOLD Microさんが公開しているのでSBC6800用に移植してみた。M.R.HaskardさんとMichael Cvetanovskiさんに感謝致します。

🔁BASICを動作させるにはメモリ32KBに拡張する必要あり🔁

引用した資料、MONITOR、BASICプログラムの参照先


★ SBC6800の参照先電脳伝説さんのHP 】
 - ROM版 datermV5ROM.zip
  (datermV5ROM.asm, datermV5ROM.LST, datermV5ROM.bin, datermV5ROM.hex)
★ BASIC
 - RAM版 DATUBASICV1.zip
  (datuBASICV1.asm, DTUBASICV1.LST, DATUBASICV1.S)
★ EEPROMの書込み【当Blogの例】

1. 当Blogの環境と条件
 ★PC:
  ・ TeraTerm Setup
    - Terminal
     New line Receive  : AUTOまたは CRのどちらでも
    - Serial port
      Transmit delay :0msec/char 100ms/line
 ★SBC6800:
  ・ 32KB メモリ実装(AT28C256)
   
2. MONITORのメモリ割当(SBC6800のメモリを32KBに拡張)
* BASICRAM領域    $2000 - $2800       SBC6800
*BASICInterprt領域       $2800 - $37F7         SBC6800
* MONITORRAM領域 $0000 - $002D        SBC6800
* MONITOR領域      $E000 - $E879   SBC6800 オリジナルは $7000 - $778D
* ユーザ領域       $0100 - $1FFF    SBC6800
 ⇥ダイレクトページ($0000-$0100)をMONITORが使っているのは
  元々がMC6802用だからだろうか?

3. 特徴

 *ブレークポイントの設定
 *SWIを利用したトレース機能
 *メモリ書き換えで後戻り可
 *メモリのブロック単位の転送・フィル
 *コマンド一覧表示
  • Motorola MONITOR共通のサブルーチン(ROM)は無し
    • 1文字入力 $E0DA  INEEE
    • 1文字出力   $E0E7   OUTEEE
    • START          $E008
    • CONTRL       $E11E


4. MONITORコマンド
 ・POWER ONで「-- DATERM V1.3 --」が表示される。


★コマンド 
 ・B
   ブレークポイントの設定
   ・D
   DUMP 256 Byte単位表示で一時停止。
   スペースで次へ。OriginalはESC。Tera TermでESC出力がうまく動作しなかったため
 ・F
   指定アドレス範囲に同一データ書込み
 ・G
   ブレークポイント、トレース時に次の命令を実行
 ・ I
   指定アドレスのメモリ内容表示・書換え
   スペースで次へ
   ^で後戻り
 ・J
   指定アドレスにJUMP
 ・L
   SフォーマットデータのLOAD
 ・M
   指定アドレス範囲のメモリを別のアドレスに転送
 ・W
   SフォーマットデータのPUNCH
 ・T
   指定アドレスから1命令づつ実行し、レジスタ内容を表示
 ・X
   ブレークポイントの解除
 ・?(当Blogで拡張)
   ヘルプ
 ・コントロールA, B, X, S, C
   各レジスタの内容表示・書換え


5. BASIC Interpritter
 MONITORに付属しているBASICを移植した。Manualにも説明されているようにプログラミングを学ぶ初心者用に作られているので、機能が限定されてる個性的なものと当Blogでは認識している。移植時のBUG FIXには時間を費やしてしまったが!
 ・ホットスタート開始番地 :$2800
 ・コールドスタート開始番地:$2803

DATUBASICV1.S開始番地MONITORのLコマンドでLOADした後
 ・ J  2800 で実行。写真の <BASIC> が表示される。
 

この例に見るように演算は左優先となっている
 ・サンプルプログラム(置き棚参照)
  TOBINARY.txt 10進数を2進数に変換するプログラム


左はModified SWTBUG   右はDATERM ROMを実装した基板
4枚の基板で消費電流は0.6A

以上

2018年12月1日土曜日

SBC6800+SBC-IOのサンプルプログラム(2)オセロ

乾謙一氏制作の「オセロ」(Ascii,june,1979)を走らせる


このプログラムは、カセットテープに記録していた時代物を当Blog所有のMEK6800 DIIにロードしてから、SBCに転送し、Tera TermのTEK4010エミュレーションで表示可能なように、加筆・修正を加えたものです⏪
NTB_PROV3.TXT,OTHELLOV3.S
OTHELLV3.zip
(otheV3.asm,otheV3.LST,otheV3.S,tekv3.asm,TEKV3.LST,TEKV3.S)

1. NAKAMOZU TINY BASIC ROMのバージョンアップ
 オセロプログラムでは、駒を移動するためにBASICのKEY関数を使用するので、割込みを使った関数を組み入れた。合わせて、ROMのメモリ割り付けを整理しバージョンをV9にあげた。
 従って、V9を焼いたROMに差し替えておく必要がある。
ファイルは置き棚にアップした。
【置き棚のリンク先】 ntbmixdV9.zipのBIN,HEXファイル
 ★ KEY関数のテストプログラム
  KEYはPCのキーが押されていない時、100を返す。
  次のプログラムは押されたキーのヘキサデシマル値を表示する。

10 A=KEY
20 IF A=100 GOTO 10
30 PRINT HDT(A);
40 GOTO 10
50 END

2. オセロプログラム
 ★ 下記ルーチンを合体したOTHELLOV3.S をロードする。
   ・オセロのサブルーチン(otheV3.S)
   ・TEK4010エミュレーションサブルーチン(TEKV3.S)
 ★Serial portのTransmit delay 20msec/charに変更する。
 ★Monitorの Z コマンドでNTBを起動した後、
  NTB_PROV3.TXTをTera Term画面にCOPY&PASTEする。
  途中でERRORが出る時にはさらに、Transmit delay 200msec/lineにしてみる。
 ★>RUNでスタートする。

3. オセロの遊び方
  • NANNIN DE YARU ? 
   0:コンピュータ同士 1:コンピュータと対決 2:二人の対決
  • BEGINNER ?
   0:初心者      1:熟練者 SBCが5分位、熟考することがある

  • 駒の移動法(割込みによるKEY関数を使用している,4155行)
   I:上 J:左 K:右 M:下

  • CTL-Cで停止、終了
コンピュータ同士対決中

対決終了画面
画面右側のABCD表示は無視してください。
(4060,4070行を消去すればなくなります)

4. TEK4010のアルファベットモードのデモプログラム
 *OTHELLOV3.S をロードした後、 TEKDEMOV3.TXTを走らせる。



5. オセロプログラムを移植した手順


◎1.制作当時の機種
◎2.SBC6800+IOとMEK6800 DIIのメモリ構成
◎3.当Blog環境と条件
◎4.BinaryデータのSBC6800への転送
  1.〜4.は 当Blogの記事【SBC6800+IOのサンプルプログラム(1)】と同じ
 BASICプログラムの転送
  MEK6800 DIIのBASICテキストRAM領域をPコマンドでSBCに転送する。
  SBCのRAM領域に転送されたテキストデータをTera Termに表示させる。
  PCのCopy&Pasteでテキストファイルにする。

以上

SBC6800+SBC-IOのサンプルプログラム(3)TEK4010 Emulation

SBC6800のVRAM出力をTEK4010 Emulationでシミュレーションする 【当Blogのプログラムファイル置き棚のリンク先】 1. 当Blogの環境と条件  ★PC:    ・  TeraTerm   Setup     - Terminal ...

これまでによく読まれた記事