2018年7月30日月曜日

SBC6800でROM化MONITORが走る

ROMでも、RAMでも走るMONITORが完成

🔁SBC6800走る🔁
当BlogではMIKBUG ROMに代えて、このMONITORを使っています
の中のMIXDBUGフォルダー
★ 特徴
 *ブレークポイントの設定
 *メモリ書き換えで後戻り可
 *メモリ上のデータ検索
 *コマンド一覧表示
 *SWTBUGコマンドコンパチブル
 SWTBUGのソースリスト、取説SWTPC-6800開発者のHPにある。

1.SBC6800用MONITOR

JBUG、MIKBUG、MINIBUGもどきなど試した結果、SWTPCのSWTBUGに行き着きました。移植作業+D、?コマンドを付加して使い勝手を改良し、SBC6800用にしたものです。

  • Motorola MONITOR共通のサブルーチン(ROM)
    • 1文字入力 $E1AC  INEEE
    • 1文字出力   $E1D1  OUTEEE
    • START        $E0D0
    • CONRL       $E0E3

2.MONITORコマンド




SWTBUGの記事については、置き棚のリンク先、BILLBUG関連資料のサイトにもある。
SWTPC SWTBUG, Ver 1.0[1977]

3.RAMでの利用法(まずはRAMで)

 ★ メモリ領域
           ワーク  - $0780 - $07C8
   プログラム- $0800 - $0C7D (約1.2KB)
 ★ 開始番地
   - $08D0
  • 置き棚フォルダーの「swtbugv1.zip」ファイルをダウンロード、解凍する。
  • MIKBUGの「L」コマンドでswtbugv1.SファイルをSBC6800にアップロードする。
  • アップロード方法については、次のリンク先を参考にして下さい。

  • MIKBUGの「M」コマンドでプログラム開始番地を設定する。
      • M 1F48
      • 1F48 ✖︎✖︎ 08
      • 1F49 ✖︎✖︎ D0
  • MIKBUGの「G」コマンドでMONITORが起動。プロンプト「$」が表示される。

4.ROMでの利用法

 ★ メモリ領域
           ワーク       - $1F00 - $1FC8
   プログラム - $E000 - $E47D(約1.2KB)
 ★ 開始番地
   - $E0D0
 ★ ベクトル
   FFF8 E000                    FDB      IRQV       IRQ VECTOR
   FFFA E181                    FDB      SFE         SOFTWARE INTERRUPT
   FFFC E197                    FDB      NMIV       NMI VECTOR
   FFFE E0D0                    FDB      START     RESTART VECTOR

【当Blogで使用した道具とROM】

  • Universal Programmer TL866IIPLUS(http://www.Xgecu.com)
    • ソフトウェア Xgpro v7.22
  • ROM(32KB)
    • ATMEL AT28C256 15PI
    • CATALYST CAT28C256P
  • 置き棚フォルダーの「mixdbugv1.zip」ファイルをダウンロード、解凍する。
  • ROMの焼き方
    • Win10 PCでXgpro v7.22を起動
      • 起動時に「Config file error!」が出るがそのまま使用
      • HEXファイルが読み込めなかったので、binファイルを使用
    • mixdbug.v1binファイルをOPEN
      • File load Options で矢印のように設定する。
WIN10では文字,アイコンが小さすぎる。WIN8.1ならOKなのだが
Programming successful ! の表示
  • SBCにROMを挿してPOWER ONし、プロンプト「$」が表示されれば起動OK
    • ?」コマンドでコマンド一覧が表示される。

ROMの選択や焼き方については下記の記事を大いに参考にしました。

「Old MC6800」さんのHPのリンク先


 ★ ワークメモリ領域



以上

2018年7月27日金曜日

SBC6800で走るS形式のプログラム(1)MONITOR

(1)🔂monitor🔂
🔀MONITORのソースリスト🔀
★メモリダンプやメモリ変更、パンチ、ロード★
の中のBILLBUGフォルダー
1. 海外のサイト記事をSBC6800に移植したMONITOR
S形式のファイルBILLBUGv1.Sを上記の置き棚よりPCに取り込む。
MIKBUGのLコマンドでSBC6800にアップロードする。

【プログラムのアップロード方法】を参考にしてください。


2.  MONITOR コマンド

3. アセンブリソースリストの内容
リストはBILLBUGv1.S, billbugv1.asm, BILLBUGv1.LST

    • MONITORの開始番地 $0A00
    •             ☆ $0A00-$0C86
  • MIKBUGのサブルーチンは使用していないので、ROM化が可能なはずですが、当Blogでは試していない。
    • INEEE は  ソースリストのCHRIN
    • OUTEEEは ソースリストのCHROUT

以上

2018年7月18日水曜日

当ブログ確定版:NAKAMOZU TinyBasicアセンブリソースリスト

🔂NAKAMOZU TINY BASIC🔂

当BLOG確定版ソースリスト

🔀付録MONITORのソースリスト🔀
★メモリダンプやメモリ変更、NTB起動★

1. アセンブリソースリストの内容
☆当Blog確定版は次のように整理☆
リストはntbv7.S, ntbv7.asm, ntbv7.LST, ntbv7.MAP, ntbv7.MAP, ntb7.bin
  • ntbv3.asmに残っていたゴミを取り除き,付録MONITORを含めたプログラム部分を$0A00-$1E60(5.5KB)にパックしました。
  • これで、Basicプロブラムテキストが$0100-$08C0までの約2KBになりました。
  • NTBインタープリッタ領域はNOPを挿入してオリジナルと同一の配置にしました。
  • 従って、NTBの記事に基づくbinaryレベルでの移植が可能です。

    • MONITORの開始番地 $0A00
    •             ☆ $0A00-$0CC3
    • NTBの開始番地    $0D00
    •             ☆ $0D00-$185A
    • VRAM制御ルーチン
    •         ☆ $185B-$1E60



★ソースレベルで移植するときのクロスアセンブラの作法の参照元は


2. MONITOR コマンド
  • ソースリストはVRAM制御ルーティンが含まれたままになっている。
    • D メモリダンプ
    • G 指定番地にジャンプ
      • G 0D00 改行でNTBスタート
    • J  NTBスタート
    • M メモリ書き換え
    • B,C,T 不明

  • MIKBUG→MONITOR→ NTB の順に起動しますが、スタックの処理が十分でないため、NTB→MIKBUGに戻る時にハングすることがある。
  • リセットでも解消しないため、POWER OFF→ONを必要とする。
  • 追加:MIKBUGから M 1F48 0D. 1F49 00を書き込んでG スタートすれば、MIKBUGNTBの往復が可能になる。



3. NAKAMOZU TINY BASIC
  •  素数の計算、EXP(指数)の計算、πの計算とも走ることを当BlogのSBC6800で確認しています。




  • Binaryでntbv7.binと当Blog所有のMEK6800D IIのPROMのNTBプログラム領域を比較したものです。



4.追加:ntbv7.SのSBC6800へのアップロード
  • Tera Term シリアル設定:送信遅延を下図のように設定すれば、1分以内で完了することを当Blog環境(Win10)で確認。


★未解決課題
  • プログラム(ASCIIの記事)を走らせるとわかるようにFOR NEXT,DO UNTIL実行時に「:」が出力されてしまう変竹林!
  • STACK処理が定かでないので、MONITOR実行中にハングすることがある。NTBでは無い。

  • Binaryでntbv7.binと当Blog所有のMEK6800D IIのPROMのNTBプログラム領域をなんども比較しているが、問題は見当たらない。



以上







2018年7月14日土曜日

SBC6800でTiny Basicを走らせるまでを振り返る

       ★Twitter @Leo_yumesichi に投稿したつぶやき★

🔁NAKAMOZU TBのアセンブルソース更新🔁

🔀SBC6800の製作🔀

🔀中百舌Tiny Basic(NTB)を動かすまで🔀

NTB関連記事のリンク先



1. 当Blogでは、NTBをSBC6800のRAM領域におきます。

  • NTBはVRAMベースのグラフィック命令が特徴です。
  • NTBプログラム3KB+グラフィック制御・モニタプログラム2KB(ゴミ出し後) +ワークメモリ2KBの 合計7KB使用しています。Basicのプログラム は1KBまでとなってしまいますが、8KBRAM (HM6264ASP)でも動作確認しています。
  • 当Blogでは、写真のような改修を行って、32KBRAM(HM62256BLSP-10)を使用しました。
  • 追記:但し、この改修を行った後、8KBRAM (HM6264ASP)をICソケットにさすと、当BlogではMIKBUGが動作しなくなりました
  • 抵抗は電源LED用

  • 当Blogで使った主な道具

2. 接触不良


  • ICに印刷されたロゴ (MC6800P)は新品のように見えるのですが、Pinが汚れていて接触不良による動作不安定になることがありました。

  • マルピンソケットも指でつまんで引くと抜けてしまうのでこれが原因になることも。
  • 半田の盛り付け不良が一番多いか
道具で焼いたMIKBUG ROMとRAMの丸ピンソケット
★ SBC6800製作についての参照元

3. アセンブルソフト環境

止む無くWindows PC
  • MS-DOS Player(ググってインストール)上で動作するクロス・アセンブラArcpitのX6801.exeを使用して、モトローラS形式で出力。ターミナルソフトTera TermでSBC6800にアップロードします。数分かかるのが難儀!(追記:7月18日Blog4章で1分以内を確認)
    • クロス・アセンブラとターミナルソフトにはそれなりの作法がある模様!
  • NTBのアセンブルソースリスト(ntbv7.asm)は、実行する前にプログラムを停止したいアドレスにMIKBUGのMコマンドで$3F(SWI)を書き込んでおくことで、MIKBUGのRコマンドに飛ぶようにしてみました。
  • ソースリストのORGアドレスを変更して再アセンブルすればアドレス移行可能
  • 暴走時にはボールペンの先で並びのICpinを短絡させて振り出しに。目と手が冷や汗!リセットボタンを取り付けておいた方が安心!
  • 暴走中は電流が通常0.14Aが0.16A程度に増量!
★ この項目についての主な参照元

道具

当Blogで使った試験器と電源線

以上



2018年7月6日金曜日

SBC6800のBasic(NTB)でπの計算プログラムが走る


🔀πの計算プログラム🔀
NTBの記事に解説されています。
🔀NAKAMOZU TBのアセンブルソース焼き直し🔀
★アセンブルソースの視認性を向上!したつもり★
「Old MC6800」さんの記事を元に、NTBのアセンブルソースに電大版のラベルを引用してみました。NTBのBinary($0D00 - )での変更箇所はMONSTKを$1E00から$1D01に拡張した部分。
★未解決課題
   ・πの計算プログラムを走らせるとわかるように画面表示が変調。が、答えは正確

1。計算プログラムを走らせるためには、Basicプログラム領域を拡張する必要があります。SBCに32KBRAMが搭載してあることが条件です。
追記:32KBRAM化には、基板の加工が必要です。電脳伝説さんの製作例の中に出てきます。ICソケットを先に半田付けしてしまった小生はtwitterに置きました。このツイッタの8KB化とあるのは32KBの間違いです】
置き棚にv.2と表示されているファイルが更新したもの
V.2の表示部をクリックすると以前のファイルも見える
  • プログラムの動作を試験した条件
  •    * オリジナルのMIKBUG ROM とHM62256ASなど32KBのSRAM
  •    * プログラムをSBCに送り込むための端末として、
  •        - ターミナルソフト TeraTerm を動作させるWindows PC
  •        - PCとSBCを接続するUSB-シリアル変換基板とケーブル
2。PCのTeraTermの設定、SBC6800への取り込み、起動については前回のブログと同じです。
  • プログラム領域を拡張(24KB)するために、MIKBUGコマンドMで入力
  •  - M 0D06 
  •      0D06 19 20
  •      0D07 00 00
  •      0D08 1D 7F
  •      0D09 00 FF
  • NTBの開始アドレス入力
  •  - M 1F48 
  •      1F48 ✖︎✖︎ 0D
  •      1F49 ✖︎✖︎ 00
  •    - G→改行で NTB のプロンプト >   が表示されればOK

3。ソースリスト置き棚の「PAIkeisan.txt」をダウンロードして、TeraTermファイル送信でSBCに送り込みます。なお、当初のPAIkeisan.txtには入力ミスがありましたので今回アップしたものを使用してください。
  • LISTコマンドでプログラムがPC側のファイル内容と一致しているか確認する。
  •  * MIKBUG1.5の場合には、小文字→大文字変換をOFFにする必要があります。
  •        (%が@に文字化けしてしまうので)
  •        アドレス $1F15 のデータを 00 から FF に変更する。
  • RUNコマンドで走り出します。
  • 計算中の電流が0.03A(20%)増量します。

以上

2018年6月28日木曜日

SBC6800で Basic(NTB)のプログラムを走らせる

🔀メモリダンプ&チェックサム🔀
🔀素数の計算🔀
🔀e(指数)の計算🔀
🔀πの計算🔀
これらのプロプラムはNTBの記事から引用しています。


1。SBC6800ルーズキットを製作すれば、NTBの上記プログラムを走らせることができます。

  • 製作にあたってのコツや部品の購入法は、プロジェクト発起人、電脳伝説さんのHPに多数の例が紹介されています。
  • PROM書込み器「TL866 II Plus」で通信クロック生成IC(PIC12F1822)のプログラム書き込みができます。('19.03.22追加)
  • プログラムの動作を試験した条件
  •    * オリジナルのMIKBUG ROM とHM6264ASなど8KB以上のSRAM
  •    * プログラムをSBCに送り込むための端末として、
  •        - ターミナルソフト TeraTerm を動作させるWindows PC
  •        - PCとSBCを接続するUSB-シリアル変換基板とケーブル

★ iMAC のターミナルモード、screenコマンドのコピペでは取りこぼしがあって、プログラムが取り込めませんでした。
2。PCのTeraTermを起動

  • PCとSBCをケーブルで接続し、TeraTermの起動画面で、シリアルポートを選択する。

  • メニュー「設定」でシリアルポートを選択し、「送信遅延」を1ミリ秒/字にする。
  •  *(0ミリ秒/字だと、SBC MIKBUG のチェックサム計算が追いつかないようで取りこぼしエラーになる)
 ★ その後(2018年7月18日Blog)
  • Tera Term シリアル設定:送信遅延を下図のように設定すれば、取りこぼし無く1分以内で完了することを当Blog環境(Win10)で確認しています。
  • 「設定」で端末を選択し、改行コード/受信をAUTOにしておく。

  • NTB本体(ntbv3.s19)をSBCに送り込む
  •  *SBCの電源を入れると*が画面に出るので、L→改行を入力する。
  •  *「ファイル」のファイル送信で、ntbv3.s19を選択、OKボタンをクリック。

  • NTBを起動
  •  *MIKBUGコマンドMを入力し、NTBの開始アドレス($0D00)を入力する。
  •    - M 1F48 
  •      1F48 ✖︎✖︎ 0D
  •      1F49 ✖︎✖︎ 00
  •    - G→改行で NTB のプロンプト >   が表示されればOK



3。チェックサムプログラムを走らせる

  • TeraTermのファイル送信でchecksum.txtをSBCに送り込む。
  • LISTコマンドでプログラムがPC側のファイル内容と一致しているか確認する。
  •  * MIKBUG1.5の場合には、小文字→大文字変換をOFFにする必要があります。
  •        アドレス $1F15 のデータを 00 から FF に変更する。
  • RUNコマンドで走り出します。
★ 結果を見ると余計な「::」が入っていますが、メモリ内容が表示されています。

4。e(指数)計算プログラムを走らせる

  • TeraTermのファイル送信でEXPkeisan.txtをSBCに送り込みます。
  • LISTコマンドでプログラムがPC側のファイル内容と一致しているか確認します。
  • RUNコマンドで走るので、KETA 数 1を入力する。つまり100桁の計算
  • 結果を見ると余計な「!!」が入っていますが、計算値は得られています。

★ この「!!」はDO UNTIL、FOR NEXTルーチンで発生しているので、NTBがDEBUGモードで動作していることが考えられますが、現時点で不明です。

5。πの計算、素数の計算について

★ プログラムがSBCに送り込めなかったり、送り込めても途中で計算が停止したりと動作が安定していません。現時点で不明です。

★ まだまだ未知数ですが、どこまで解明できるやら。
☆ NTBのROMの元々の開始アドレス$6C00を$0D00にしてアセンブルしたものですので、開始アドレスは変更することができるのですが、モニタ&VRAM制御ルーチンと関連しているので、この解析が必要となります。VRAMを入手できればその接続を考える方が早いかもしれません。
☆ 何れにしても、トレース機能などDEBUGができるようにしたいものですが!!!

以上

   


2018年6月26日火曜日

NAKAMOZU TINY BASIC(NTB)の アセンブルソース作成

NAKAMOZU TINY BASIC(NTB)の
アセンブルソース作成にチャレンジ

 ☆ASCIIの記事参考にしてNTBのアセンブルソースを作成してみました。
 ☆NTBバイナリは3KB未満なのですが、手持ちのROMは6KBあります。
  差分の3KBにはモニタとVRAM制御ルーチンが書かれていますが、
  その解読はしていませんので、ソースリストはそれらを含んだままです。
 ☆ntbv3.s19(モトローラS形式)をSBC6800に送り込み、先頭アドレス
  $0D00でGスタートすればプロンプト  が現れます。
     ・アドレス $0100-$0CFF モニターとVRAM制御
            スタックポインタ    $1E00
     ・アドレス $0D00-$18FF NTB
            ワーク領域はASCIIの記事参照
            プログラムテキスト領域 $1900-$1CFF
 ☆SBC6800の端末はWindows 10 teratermを使用していますが、これには
  若干作法があるそうです。ちなみに設定:端末の受信:AUTO シリアル
  ポート 1ms/字、0ms/行ですので、送り込みに5分程度かかります。


 ★未解決課題
   ・checksum.txtプログラム(ASCIIの記事)を走らせるとわかるように
    PRINT文のフォーマットが変竹林!
   ・sosukeisan.txtプログラムはERROR NO.13出たり、出なかったり
    動作が変竹林!。推測ではスタックが混信?
   ・SBC6800はMIKBUGなので、MEK6800D IIのJBUGのようなトレース
    機能がない。なんとかしたいが!
   ・VRAMアドレスにスタックポインタを設定して、画面内で暴走するのを
    監視しながらデバッグしたのが懐かしい。

 ★まだまだ未知数
   ・ですので、いろいろとご指導いただけると嬉しく思います。

【ことの次第】

  1. 発表された記事を参考にしてMEK6800D IIに移植した時代もののROM
  2. ROMのBinaryファイル(ntb.bin) をdasmxで逆アセンブル
    • dasmx -a -o24576 -c6800 ntb.bin
      • dasmx(ググってインストール) はwindows10 コンソールで実行
      •   windows10では動作しませんでした。windows8.1です。windows10でOKの場合もある。
      • -o24576 はROMの先頭アドレス、$6000の10進数
      • ntb.asmを出力 
  3. ntb.asmをx6801.exeでアセンブル
  4. ntbv3.LSTのエラーがなくなるまで、テキストエディタでntbv3.asmの編集、アセンブルを繰り返し、エラー0のファイル、ntbv3.HEXを生成
    • x6801.exe用アセンブラ作法を習得するのに時間がかかる。
    • FCB を多用する羽目に
  5. hex2binでntbv3.HEXをntbv3.binに変換し、ntb.binとntbv3.binが一致すれば完了
    • hex2binはExcel用でない。OSDNかSourceForgeをググってインストール
    • 今回はwindows10 WSL ubuntuを導入して実行
      • win10コンソールでbashと入力
        • Leo@WIN10:/mnt/c/Users/Yumes/dos$のプロンプト
  6. ntbv3.asmを移植し易いように編集
      • 先頭アドレスは$0100
  7. ntbv3.asmをアセンブルしてntbv3.LST、ntbv3.HEXを出力
  8. hex2binでntbv3.HEXをntbv3.binに変換
  9. s19toolでntbv3.binをSBC6800に入力可能なSフォーマットに変換
    したntbv3.s19を出力
    • s19toolはOSDNかSourceForgeをググってインストール
      • win10コンソールでbashと入力
        • Leo@WIN10:/mnt/c/Users/Yumes/dos$のプロンプト
        • s19tool -intbv3.bin -b0100h -ontbv3.s19
        • -b0100hは先頭アドレス



以上

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

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

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