2018年8月16日木曜日

SBC6800で走るS形式のプログラム(2)メモリテスト

1. SWTPCのメモリテストプログラム
🔀ソースリストと取説のリンク先(海外サイト)🔀

 取説にはCDAT2, ROBIT2, MEMCON3, SUMTEST2の4つのメモリテストプログラムがあるが、
このうち、当Blogで使いやすいと考えたSUMTEST2をSBC6800に移植した。

【ファイル置き棚のリンク先】
    SUMTEST2.ZIP
  • 変更箇所


  •  利用法



以上

2018年8月12日日曜日

NAKAMOZU 開発者のソースリスト公開を受けて

NAKAMOZU BASIC の原ソースと当Blogの相違点

中段 「新たに発掘」の記事
ntbv9X.zipファイル
(ntbv9X.S, ntbv9X.asm, ntbv9X.LST, ntbv9X.MAP)

1. 当Blogの明らかなBUG
STACKラベルを訂正した。従前のプログラムは起動すると、NTBプログラムの先頭$0D00から6バイトを破壊していた。
ラベル   原ソース    当Blogソース   修正   
      FSTCK     L6C06     MONSTK

  •  訂正箇所




2. BUGでは無いが、修正した改良

  • 当Blogでは、ステートメント1行実行する毎にNULL($00)を出力して、FT231XS(USBシリアルインターフェース)の緑色LED点滅で動作を監視していたが、原ソースでにはないので修正
  • 実行中はSBC6800が沈黙してしまうので、不安になるかも。但し、CTL-Cで割り込みによる中断で動作確認可能
  • 修正箇所



3. 併せて改善した点

  • NTBから「EX」コマンドでMONITOR(MIKBUG,MIXDBUG)に戻った後、MONITORの「G」コマンドでNTBがホットスタートするようにした。これで、NTBプログラムにMONITORのブレークポイント設定「B」コマンドが利用できる。
  • 修正箇所

4. その他
  • 読みやすくするために、ラベルは原ソースに可能な限り修正していくこととしたい。
以上

2018年8月8日水曜日

NAKAMOZU BASIC の当Blogバージョン比較

⏩NAKAMOZU TINY BASIC 当Blog Ver.の説明⏪

BASIC ASCIIの記事のリンク先
【ソースリスト置き棚のリンク先】


➡とりあえず、NAKAMOZU TINY BASIC を使ってみたいという方は、
(1) SBC6800を製作する。
  製作事例のリンク先
(2) ソースリスト置き棚の ntbv9X.zipをダウンロードして、ntbv9X.SファイルをSBC6800にアップロードする。
  アップロード方法のリンク先
⬅ここまでです。

1. それぞれの相違点(NTBV3は削除しました)
     開始番地 NTB本体のメモリ配置 MONITOR(1) 割り込み 画面のBUG 
ntbv3  $0D00   オリジナルと同じ   あり    無し   あり      
ntbv7  $0D00   オリジナルと同じ   あり    無し   あり      
ntbv9X $0D00     異なる       無し    あり   無し       

      メモリ領域    ワーク領域        BASICプログラム容量    
ntbv3  $0100-$18F8    $1E00-$1F80        $1900-$1D00      
ntbv7  $0A00-$1E60    $08C0-$09FF     $0100-$08C0         
ntbv9X   $0D00-$1DE7(4.4KB) $0C00-$0CFF(256B)         $0100-$0C00(2.8KB)   

  • 注(1)ここで言うMONITORは当Blog手持ちのMEK6800 DII ROMで採用していたもので、NTBを走らせるのに必要ないものです。


2.それぞれをどう利用するか
  • ntbv3
    • とりあえず動くバージョンであり、本日の時点で不要と思うが。
  • ntbv7
    • NTB本体のメモリ配置が同じなので、自らVRAM制御ルーチンを開発して、それぞれのシステムに移植する。
  • ntbv9X
    •  BUG無し、割り込みありでNTBが走る。VRAMは使ってない。ROM化可能だが、NTBの特色である、グラフィック機能が生かせてない。

3.画面のBUG(変竹林)の解決
  • ROM版MIXDBUG (SWTBUGもどき)のブレークポイント機能でただひたすら追い込んで解決した。
  • プログラムテキストをRAMから読み込む時に1行に複数のステートメントを記述するための『:』を出力していたために発生していた。
  • 手持ちのROMをディスアセンブルした後の解析ミスが原因か?
    【修正部分はこのリンク先の第3章】

★ 今後の課題
  • BASICのアセンブリソース解き明かしについては、「ここらでよかろうかい」と考える。
  • BUGや改良策などについては、Twitterなどで発信していただけるとありがたいです。
  • 当Blogは、引き続きntbv9Xを使って、懸案課題のSBC6800用VRAMに関して考えていきたい。

以上




2018年8月6日月曜日

SBC6800で割り込み処理を使ってみる。

割り込みでNTB BASICプログラム実行を中断させる

🔁割り込み処理の試験プログラム🔁
🔁NAKAMOZI TINY BASIC に組み込む🔁

1. 割り込み処理の試験プログラム

  • 6800の割り込みの実践プログラムはググってもあまり見当たらない。そこで「Old MC6800」さんのHPを参考にして、アセンブルソース(irqv1.asm)で試験した。6850の割り込み出力を6800が検出して処理を行う。
  • ソースリスト
    • irqv1.zip ファイル
    • irqv1.asm     irqv1.LST     irqv1.S     irqv1.MAP
★ MC6800    CLI で割込み待ちとする。
★ MC6850    ACIAコントロールレジスタに$95を書き込み、割込み出力モードにする。

【 http://www.swtpc.com/mholley/Notebook/Hardware_ACIA.pdf より引用】
  • Main Routine:割込み待ちのループで、ワークメモリIRQCHR ($1F17)がNULL($00)で無ければ「IRQ OK」のメッセージを出力する。
    • MIXDBUGで $1F14 - $1F16 はブレークポイントのワークメモリ
    • そのため、IRQCHRはMIXDBUGの空きである $1F17  とした。


  • 割込み Routine:CTL C($03)が入力された時に、ワークメモリ($1F17)に$03を書き込む。


  • DELAY Routineがあると割込が発生しない。複数の割込でIRQCHRがリセットされると推測される。従って、IRQON直後にACIAデータを読み込む必要がある。


2. NAKAMOZU TINY BASICに組込む
  • BASICプログラム実行時にステートメント1行を読む毎に割込を受け付ける。
  • サブRoutine(IRQON)は、ACIA(MC6850)のコントロールレジスタ($8108)に$95を書き込み、CLIを実行する。
  • 割込RoutineでCTL C($03)の入力があればNTBのHOT STARTにジャンプする。 
3. BASIC出力画面の変竹林が解消しているが、現在テスト中なので、別途Blog予定
  • プログラムテキストをRAMから読み込む時に1行に複数のステートメントを記述するための「:」を出力していたために発生していた。
  • ソースリストの変更部分
    • ソースリスト置き棚のntbv7.asmを下記のように書き換え、再アセンブルした。



以上

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

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

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