2018年9月6日木曜日

SBC6800+SBC-IO用のMONITOR ROMを試してみる

SBC-IO用のROM化MONITOR

🔁SBC6800とSBC-IO Rev.2基板、SBC-BUS基板が必要🔁

★ SBC6800の参照先電脳伝説さんのHP 】
★ SBC-IO開発者の参照先【レトロな雰囲気さん】
★ SBC-IO基板の製作について【当Blogの参照先】
★ MONITOR【プログラムファイル置き棚のリンク先】
  置き棚にSBC-IO専用フォルダーを設置 
 - ROM版 mixdbugv5.zip RAM版 swtbugv5.zip swtbugv5.S
 - RAM版は動作確認用に作成したもので、システムRAMは$1F00に設定されている。

1. MONITORのメモリ割当
* ユーザRAM領域  $0000 -      SBC6800
* IO領域      $8000 -      SBC6800  SBC-IO
* システムRAM領域 $A000 - $A100         SBC-IO
* MONITOR領域   $E000 - $FFFF   SBC6800
* ユーザ領域    $0000 - $7FFF  SBC6800
* ユーザ領域    $A100 - $DFFF         SBC-IO

2. 特徴

 *ブレークポイントの設定
 *メモリ書き換えで後戻り可
 *メモリ上のデータ検索
 *コマンド一覧表示
 *SWTBUGコマンドコンパチブル

  • Motorola MONITOR共通のサブルーチン(ROM)
    • 1文字入力 $E1AC  INEEE
    • 1文字出力   $E1D1  OUTEEE
    • START        $E0D0
    • CONTRL       $E0E3
  • カンザスシティ標準の入出力ルーチン(ROM)
   SBC-IOのACIA(MC6850)での入出力。入出力時にSBC-IOのLEDが点滅
    •    PUNCH  $E600
    •      アドレス開始番地を $A002 、終了番地を $A004 に設定して
    •           J E600 と入力
    •    LOAD   $E680
    •           J E680 と入力
3. MONITORコマンド

> CコマンドはSWTPCの端末CT-1024のカーソル制御で、$10(CLEAR),$07(BEL)が出力されます。
> Gコマンドは$A048、$A049に書き込まれた番地からプログラムを起動します。             (注)SBC6800のMIKBUGでは$1F48、$1F49になっています。



4. ブレークポイントの使い方
   開発者のHP「SWTBUG USERS GUIDE」より
   → http://www.swtpc.com/mholley/swtbug/SWTBUG_Users_Guide.pdf

  • $A048 と $A049 にデバッグするプログラムの開始番地を設定します。
  • コマンド「B」を一時停止させたいアドレスに設定します。この時、このアドレスにはSWI($3F)が書き込まれます。
  • 「G」コマンドでプログラムをSTARTさせるとプレークポーントのアドレスで停止し、レジスタ内容を表示します。
  • 次のブレークポイントを設定します。この時、最初のブレークポイントアドレスに書き込まれた$3Fはもとのインストラクションコードに戻されます。
  • 「G」コマンドで最初のブレークポイントアドレスからプログラムが実行されます。この過程で$A048,$A049は再実行アドレスが書き込まれているので「M」コマンドで書き換えてはいけません。
  • ❶ SWIVアドレスはブレークポイントで使用されていますので、デバッグするプログラム内で使用していると正常な動作は保証されません。
  •  同様にプログラム内でスタックポインタを書き換えていると正常な動作は保証されません。
  • ❷ ブレークポイントが設定されていない時はSWIVアドレス、$A012 に$E125、設定されている時は$E124が書き込まれています。
  • ❸ ブレークポイントは次のように、連続して同じアドレスに設定すると、元のインストラクションが失われ、プログラム内容は失われてしまいます。
   B 1377
   G
   B 1377
     次の場合にはプログラム内容が失われることはありません。
   B 0100
   B 1377
   B carriage return

  • ❹ ブレークポイントルーチンはRAM $A014-$A016の3バイトを使用しています。

以上










2018年9月1日土曜日

SBC6800+SBC-IOで走るS形式のプログラム(3)SBC-IO 基板テスト

SBC-IO Rev.2 の製作

 まず、HPをよく読んでおくことですが、基本的には基板のシルク印刷通りに部品を配置し、半田付けをすれば終わりです。RAM挿入時は下記に注意



★ 参考までに、当Blogがルーズキット製作時に出会った躓き例を紹介します。
  • 接触不良の大半は、半田忘れ、芋半
  • 接触不良で難儀したのは、ロゴ印刷が新品同様なセコハンICのPIN汚れ(写真参照)
  • ICの逆挿し。EPROMはお釈迦、SRAMは無事
  • 基板の細部のブリッジの見逃し(写真参照)


ピンの油汚れ
パターンプリッジ


1. 各機能ICのアドレスと当Blogで走らせたテストプログラム

          番地            部品               テストプログラム 
レジスタ $8000         74LS173   4個のLED ON/OFF     MUSIC.S               
RAM  $A000-$DFFF HM28128ALP 拡張RAM (16KB)      sumtest2.S            
ACIA    $8094-$8095   MC68B50       

PTM  $8030-$8037   MC68B40      
PIA    $8050-$8053   MC68B21      コネクタJ1に出力    MUSIC.S               


2. メモリテストプログラム
  • sumtest2.S
    • MONITORのM コマンドで、$1F02-05 に開始アドレス $A000 と 終了アドレス $D000を書き込んで G コマンドでメモリチェック開始
    • この例では、終了アドレスを$D000としているが、$E000にすれば、全RAMチェックとなる。当Blogで確認済み
  • このBlog】を参照

  

3. レジスタとPIAテストプログラム

  • MUSIC.S
    • プログラム開始番地 $0020
    • プログラム領域   $0000-$0086  MELODY data $00C0以降
    • MEK6800 DIIのマニュアルに掲載されているサンプルプログラムにレジスタ書き込みを追加したものです。
    • PIA ポートB アドレス $8052.$8053 を使い、CB2をON/OFFしてAUDIO出力します。
    • 同時にレジスタアドレス $8000 にPITCHデータが書き込まれ、4個のLEDが音階に合わせて点滅します、
    • CB2(J3 pin 26) とGNDにアンプを接続すればメロディが出力されます。













以上




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

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

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