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でテキストファイルにする。

以上

2018年11月25日日曜日

NAKAMOZU TINY BASIC ROMでできること

⏮NTBasic ROMはNTBとSWTBUG及びその追加ツールを合体⏯

ROMの内容を順次解説していく


1. SWTBUG拡張(版MIXDBUG)

★コマンド
 ・?(拡張)
   HELP
 ・B
   BREAK POINTの設定
   1つのみ
 ・C
   CLEAR
 ・D(拡張)
   DUMP
   ・E
   Sフォーマットの終了データ出力
 ・F
   指定範囲のデータ探索
 ・G
   アドレス$A048のデータ番地に移動
   NTBを起動した後は、NTBのホットスタート番地から起動
 ・J
   指定アドレスプログラムを起動
 ・L
   SフォーマットデータのLOAD
    SBC6800のACIAからLOAD
 ・M
   指定アドレスのメモリ変更
   スペースで次へ
   ^で前に戻る
   CRで終了
 ・P
   SフォーマットデータのPUNCH
    SBC6800のACIAへPUNCH
 ・R
  レジスタ内容表示
 X(拡張;HELPには表示されない)
   追加版TBUGに移動
 ・Z
   BASICの起動

2. TBUG(追加版)


★コマンド 
 ・B
   ブランチ範囲のチェック
   ・D
   DUMP
 ・G
   SWTBUGに移動
 ・J
   指定アドレスにJUMP
 ・L
   カンザスシティフォーマットデータのLOAD
    SBC-IOのACIAからLOAD
 ・M
   指定アドレスのメモリ変更
   スペースで次へ
   CRで終了
 ・P
   カンザスシティフォーマットデータのPUNCH
    SBC-IOのACIAへPUNCH
 ・T
   指定した範囲のデータを命令語長形式に変換

 ・Z
   BASICの起動

3. サンプルプログラム
 ・電源ON後、DRAG&DROPでNTBプログラムのスタート
  当Blogの【ファイル置き棚 SBC6800+IO】のTEK_RUN.txtをDRAG&DROPする。


以上

2018年11月22日木曜日

NAKAMOZU TINY BASIC(NTB)をROMに焼いてみた

🔀NTBとSWTBUGもどきMonitorを1つのアセンブルソースリストに合体🔀

ntbmixdv7.zip
(ntbmixdv7.asm,ntbmixdv7.LST,ntbmixdv7.HEX,ntbmixdv7.bin)
🔀SBC6809の記事は【SBC6809をつくる】です🔀
SBC6800 2種とSBC-IO 2枚の組合せでプログラムの試験を実施

1. 当Blogの環境と条件
 ★PC:
  ・ TeraTerm Setup
    - Terminal
      New line Receive  : AUTO
      Auto switch(VT<->TEK) ☑️
図1サンプルプログラム起動時
    - Serial port
      Transmit delay :
       この設定はPCとの相性で、適宜変更を要する。以下は当Blogの例示
図2 S ファイルの読込み時
図3 BASICプログラム読込み時(CPU clock 1MHz)
clock 614KHzの時は20msec/char必要
  ・ Xgpro TL866II Pus
    Universal Programmer EEPROMの焼き込み


 ★SBCシリーズの製作:
  SBC6800 (スイッチサイエンス)  *32KBRAMの実装で試験
  SBC6800 Adapter Rev.02 (ORANGE pico)
  SBC-IO Rev.02  (ORANGE pico) *16KBRAM、MC68B21、MC68B50の実装
  SBC-BUS Rev.02 (ORANGE pico)

 ★稼働時の消費電流:
  4.83V  0.22A  

 SBC6800+IOとMEK6800 DIIのメモリ構成
図4 メモリマップ

2. ソースリストのメモリ割当
ROM(図4の$E000-$FFFF)
 *NTB                            $F300  -  $FF38
 *TBUG(SWT extension) $E600  -  $F2B6
   VRAM CONTROLを含む
 *MIXDBUG                   $E000  -  $E5CB
RAM(図4の$0000-$5FFF)
  *TBUG                        $A100  -  $A1FF   STACK&WORK
  *MIXDBUG                  $A000  -  $A0FF   STACK&WORK
  *NTB                            $4000  -  $5FFF  VRAM予約
                                        $2000  -  $3FFF    BASICプログラム
                                        $0000  -  $00FF    WORK
RAM(空き領域)
 *          $A200  -  $DFFF
 *          $6000  -  $7FFF
 *          $0100  -  $1FFF

3. EEPROMに焼き込む
  • 使用したEEPROM(32KB)
   ・CATALYST CAT28C256P
   ・ATMEL AT28C256 15P
  • Select ICで 32KB AT28C256を選択し、「TO Buffer Start Addr(HEX)」を 6000に設定する。
  • File ntbmixdv7.binを読み込む。



4. BASICの起動
  • SBC6800にEEPROMを挿して、電源ONするとMonitorのプロンプト「$」が表れる。
  • ZコマンドでNTBが起動し、プロンプト「>」となる。
  • プログラムのSAVE、LOADはSBC-IOのACIA(MC6850)からも可能になっている。
5. サンプルプログラム
 ★電子音楽プログラム【denonv1.S】をロードした後、
 ★Serial portのTransmit delay 10msec/charに変更(図3)する。
 ★Copy&Pasteで次のプログラムを入力する。
 ★USER($01A0,X,C)は、先頭番地$01A0の電子音楽サブルーチンです。
10 REM *** KEY TUNE PROGRAM ***
20 IN. "PITCH :" A
30 IN. "LENGTH:" B
40 N=0
50 DO:N=N+1
60 C=B*$100+A
70 K=USER($01A0,X,C)
80 U.(N>100)
90 GOTO 20
130 END
  • RUNで起動、電子音楽サブルーチンの音階テストが動作する(図1、2、3)
  • コントロールCで終了する。
★その他のサンプルプログラム
    【プログラムの置き棚】のSBC68IOフォルダ
 *MIXDBUG Monitorでtekv1.Sをロードした後、NTBasicのTEKDEMO.txtを走らせる。
TEK 4010 DRAWING DEMO
*置き棚のBASICPROフォルダにあるプログラム(NTB関連記事より引用)
  checksum.txt  メモリダンプ
  EXPkeisan.txt  指数の計算
  sosukeisan.txt  素数の計算
  PAIkeisan.txt   πの計算
  
6. 参考
 ASCII, VOL.3, #4 April, 1979 記事 表3 変更箇所(1)とROMとの対応表

😄twitterは  @Leo_yumesichi

以上 

2018年11月18日日曜日

SBC6800+SBC-IOのサンプルプログラム(1)電子音楽

PCのキーで音階を生成する

このサンプルプログラムは機械語で制作し、カセットテープに記録していたものを読み解いて、アセンブル言語に翻訳したものである⏪
(denonv1.asm, denonv1.LST, denonv1.S) 
1. 制作当時の機種
 *MEK6800 DII(MOTOROLA)
 *ROM,RAM基板

 *VRAM基板
 *パラレルキーボード(YEC製、TOUCH KEYBOARD)
 *静電プリンタ(関東電子機器、MODEL TSP-7706B)

1978年

2. SBC6800+IOとMEK6800 DIIのメモリ構成



  図のSWTBUGにはDUMPコマンドなどを追加した当Blogの【MIXDBUG】を使用している。

3. 当Blog環境と条件
 ★PC:
 win10に次のコマンドをインストール:
  TeraTerm

  dasmx
  mbhconv
 
 ★SBCシリーズの製作:
  SBC6800 (スイッチサイエンス)  *32KBRAMの実装で試験
  SBC6800 Adapter Rev.02 (ORANGE pico)
  SBC-IO Rev.02  (ORANGE pico) *16KBRAM、MC68B21、MC68B50の実装
  SBC-BUS Rev.02 (ORANGE pico)
 ★稼働時の消費電流:

  4.83V  0.22A  
 参照記事:
  「電脳伝説さん」の【ホームページ】
  「レトロな雰囲気さん」の【SBC6800/SBC6809ルーズキットを動かす】
  「kuni-netさん」の【CPUボード(SBC6800)で電大版TinyBASICを動かす】
   当Blog の製作記事【SBC6800+SBC-IOで走るプログラム】


4. SBC6800への転送
  •  MEK6800 DIIのカセットインターフェースに使用しているACIA MC6850のTXD,GNDをSBC-IOのシリアル入力コネクタのRXD,GNDに接続。



SBC-IO Rev.2回路図の一部



  •  MIXEDBUGのカンサスシティスタンダードデータ入力サブルーチンで、MEK6800DIIのプログラムをSBC6800のメモリに取り込む。
  •  SBC6800のPコマンドで、PCにモトローラSフォーマットで送り込む。
  •  SフォーマットデータをCopy&Pasteでテキストファイルにする。-->denonv1.S
  •  Sフォーマットをバイナリ変換する。--> denonv1.bin
  • Binaryファイルをディスアセンブルする。
    • Binaryファイルをdasmxで逆アセンブル
    • dasmx -a -o先頭番地 -c6800 denonv1bin
      • dasmxはググってインストール
      • -o先頭番地はプログラムの先頭アドレスで0x1234など
      • denonv1.asmを出力 
  • アセンブル出力を読み解く。
5. 電子音楽サンプルプログラム
    denonv1.zip(denonv1.asm, denonv1.LST, denonv1.S)
  • プログラム開始番地 $0100
  • プログラム領域   $0100-$02BE
  • メロディ記録領域  $0400-$0800
  • 音階データ領域   $025A-   ソースリストの306行目以降
             このデータを変更すればPITCHが変わる。
  • PIA ポートB アドレス $8052.$8053 を使い、CB2をON/OFFしてAUDIO出力します。
  • 同時にレジスタアドレス $8000 にPITCHデータが書き込まれ、4個のLEDが音階に合わせて点滅します、
  • CB2(J3 pin 26) とGND(J3 pin 6) にアンプを接続すればメロディが出力されます。
 ★ 使用法
  PCのキーで音階を生成する。
   0-9 :音痴な音階
   P    :プレイモード
   E    :プレイ中のストップ

★ 電子音楽プログラム(denonv1.s)

S1130100CE0400DF08CE0800DF0CBD0248BD022883
S11301108D627F000396014C97019105273EBD0235
S11301203524EF861F9702BD01B99C0C2A2E8D64DD
S1130130BD023524DD80309702BD01DB9600D60474
S11301408D5C7C0001BD0235815027108030910206
S113015027EA8D659C0C2A048D3A20B686409704C4
S1130160CE8000BD0224BD01EF259F96044627ECF6
S1130170970420EC8650DE08A700089C0C26F94F53
S1130180CE8052A7014AA7008604A70086409704A0
S1130190DE08DF064F97009701970297033937C6A9
S11301A03EF78053165A26FDC636F78053165A2654
S11301B0FD335A2AE9B7800039DE0696028AC0A7C1
S11301C000089601A70008DF0639DE06A600843F72
S11301D0970208A600970108DF06399602CE025856
S11301E009088C027727034A2AF7A600970039DE0C
S11301F006DF0A8D9B8DD39C0A27198DDE96013666
S1130200D60496008D98324A26F5368D33814527DB
S11302100D3220E1368D2981452703320C39320D08
S113022039CE10000926FD39B680184724FAB68065
S113023019BDE1D139B6801847B68019BDE1D1396D
S1130240B6801847B6801939CE02782004BDE1D1B2
S113025008A600810426F63940AA96887C6C60586A
S11302605548403830282018FFF8F0E8E0D8D0C8C6
S1130270C0B8B0A8A09890010D0A20504C45415335
S113028045204B455920494E3F202020203A302D0F
S1130290390D0A205020202020202020203A504CC4
S11302A041590D0A204520202020202020203A53A7
S11002B0544F5020504C41590D0A2D3E046E
S9030000FC

以上

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

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

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