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

以上

2 件のコメント:

  1. Old68funと申します。Twitterの方に6800のアセンブラでベースページエリアではJSR命令が9Dになると書かれていますが、これはわざとではなく、単にArcpitのアセンブラのバグに過ぎないのではないでしょうか。FLEX68上のアセンブラではBDになります。また、6809ではベースページモードがありますので、FLEX9のアセンブラでは当然9Dになります。Arcpitの制作者が6809にあるので6800にもあるはずと勘違いしてしまったとかの可能性はないでしょうかね。ソースがあればすぐに検証できると思いますがソースは公開されているのでしょうか。

    返信削除
    返信
    1. 夢七Leoです。FLEXでは質問にお答えいただきまして感謝しております。ご質問のソースリストはBlog内のサンプルプログラムの置き棚にあります。denonv1.zip内のdenonv1.asmです。Arcpitのアセンブラは6800ソースを6809コードに変換することもできるので、ご指摘の通りかも知れません。情報に感謝いたします。FLEXについてはDISKに不備がありや否やを含めて現在も考えあぐねているところです。

      削除

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

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

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