Categories: R10旧型PC

MB6892 マーク5の拡張RAMでFLEX9を試す その9 (CRT出力の1)

ベーシックマスタレベル3でFLEX9を動作させる作戦の続きです。

今回のFLEX9動作環境は64KBの拡張RAMを使っている上にTPAを連続して確保したいので$8000付近にROMとのバンク切替用のワークが取れないのでROMの機能がうまく使えません。
ROMのサブルーチンが上手く使えないのでFLEX9のドライバ内にレベル3のCRT出力とKB入力の機能を実装したいと思います。

64KB拡張RAMで動作しているプログラムからCRT出力するにはVRAMエリアのバンク切換えが必要ですがレベル3にはVRAMエリアのみバンク切り換えできる機能が用意されていました。

64K拡張RAM使用中のVRAMアクセス切替は$FFE8 で 拡張64KRAM $78 ⇔ $7C VRAMエリア

を切替えることでVRAMエリアを切替できました
試しにACIAに文字出力するところでUレジにVRAMの先頭$400をセットしデータを書いてみました

                ORG             $E020
#; AccA=ASCIIコード
OUTPUT          EQU             *
                PSHS            A
OUT01           LDA             $FFC4
                ANDA            #$02
                BEQ             OUT01
                PULS            A
                STA             $FFC5         ;send data
                BSR             CRTCHR
                RTS
CRTCHR          EQU             *
                CMPA            #$20
                BLS             CHRRTS
                CMPA            #$7F
                BHI             CHRRTS
                LDB             #$07
                STB             $FFD8           ;COLOR REG
                LDB             #$7C
                STB             $FFE8           ;VRAM SELECT
                LDU             CADRS
                STA             ,U+
                STU             CADRS
                LDB             #$78
                STB             $FFE8           ;EXTRAM SELECT
CHRRTS          RTS

ACIAのデータレジスタを書いた後に追加したので、ACIA出力とVRAMへのデータ書き込みは分かれているはず・・

表示結果はこんな感じで、VRAMに書いた文字は反映されました^^

表示がおかしくなるので$20のスペースはスキップしていますが、文字出力はできるようです。
しかし、ACIAに文字を送信した後にVRAMにデータを書いていますが、なぜだかACIAのデータ送信がおかしくなります
(ACIA送信中に割込みORCC #$50で禁止にしてみても改善なし・・)


VRAMへのスクロールや改行処理を追加しACIAの文字化けを解決すればCRT表示も実装できそうな感じです。

ROMに頼らずBIOS内のプログラムで完結できるように頑張ってみます^^
ざっくり追いかけてみた感じではCRT出力よりもKB入力の方が複雑な感じがしました

そんなVRAMへのデータ書き込みの記録・・・

kabekin