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 ...

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