マーク5の拡張RAMでFLEX9を試す その3 (FLEX Loader)

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

FLEX.CORをフロッピのTrk1,Sct1に置いてマーク5の64KB拡張メモリにロードするローダを作ってみました。

ベースはTSC社のFLEXアダプテーションガイドのAPPENDIX Eにレベル3のディスクルーチンを追加したものです

拡張メモリのバンク切り換え機能を含め256バイト以内に収まりました。

まだまだ改良の余地もありますが、とりあえず目的の動作は達成しました^^

MS-DOSのクロス開発環境でAS63_DOS.EXEのアセンブラを使わせて頂きました 続きを読む マーク5の拡張RAMでFLEX9を試す その3 (FLEX Loader)

マーク5の拡張RAMでFLEX9を試す その2 (FLEX.COR作成)

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

6809SBC用に作成していたFLEX9のディスクイメージを使って作業していましたが、数種類のFLEX.SYS
を作成しており、どのSBC用か分からなくなっているので作業ベースのFLEX.CORをもう一度作り直して
おきます。

次回の作業に備えて作業手順メモ

使っているツールは違いますが作業手順はold68funさんのブログにある手順と同じものです → こちら

▼FLEX.CORの作成
こちらの手順でSWTPCのフロッピからFLEX.CORを取り出したのでFM11のFBASICが付加した情報が
あるので最初の5バイトをバイナリエディタで削除

最後のデータは 続きを読む マーク5の拡張RAMでFLEX9を試す その2 (FLEX.COR作成)

マーク5の拡張RAMでFLEX9を試す その1

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

FLEX9を動作させるのに邪魔なVRAM領域$0400~の対応方法がどうにもうまくいかないので、
マーク5をALLRAMで動作させる方法でなんとかならないか調べていきます。

レベル3でFLEX9を動作させるにはいろいろハードルがありますがTPA内のVRAM領域の問題は難しいです。
FLEX9はメモリの上限を指定するパラメータは存在するようですが下限は指定できないようなので、
そのままでは使えないようです。
(下限が指定できれば、TPAは狭いですが動作できそうなんですけどね^^;;;)

と、いうわけでI/O領域以外連続したRAMを確保できるマーク5の64KB拡張メモリでFLEX9を実行できないか
調べています。
(ALLRAMはROMBIOSのバンク切り換えで躓きそうですがVRAM領域の問題よりハードルが低そう・・・)

こんな感じで実装できないか段階を分けてチャレンジしてみたいと思います

続きを読む マーク5の拡張RAMでFLEX9を試す その1

レベル3 マーク5のROMの裏RAMバンク切り換えメモ

レベル3マーク5やS1のBモードで使えるROMの裏RAMをバンク切り換えで使うためのメモ

MB-6890やMB-6891で使用する拡張バンクメモリMP-9818の使い方とは違うようなので整理しておきます

▼PIA-BANK機能($FFD0, $FFC1)

PIA-A BANKPA7PA6PA5PA4PA3PA2PA1PA0
0$C000~
$EFFFは
書込専用
$A000~
$BFFFは
書込専用
N/AN/A$E000~
$EFFFの
RAM選択
$C000~
$DFFFの
RAM選択
$A000~
$BFFFの
RAM選択
$8000~
$9FFFの
RAM選択
1$C000~
$EFFFは
読書モード*1
$A000~
$BFFFは
読書モード
N/AN/A$E000~
$EFFFの
ROM選択
$C000~
$DFFFの
ROM選択
$A000~
$BFFFの
ROM選択
$8000~
$9FFFの
ROM選択
*1 PA1=1のときは$C000~$DFFFは無効、PA2=1のときは$E000~$EFFFは無効→ROM選択時は無効ということ
電源投入時はPA0,PA1,PA2,PA3は0(ROM選択中)、且つ$8000~$EFFFは書込専用モード(RAM未選択の書込専用モード)
バンクレジスタはPIA-Aの初期化後$FFC1のD2=1(ORA選択)した後に使用可能
書込専用モードはROMが見える状態で扱えるのでメモリにプログラムやデータを一括ロードするときに便利かも
バンクに切替中に割込みが発生した場合、ROMの割込みルーチンが使えないので切替中は割込み禁止等の工夫が必要
裏RAM領域のデータは直接外部記憶装置にLOADM,SAVEMできないので、標準RAMに転送して操作する必要がある
ROMの機能を使う場合、裏RAM領域とROM領域からも両方から見える$7FFF以下に切替プログラムを置く必要がある
ROMの裏RAMの$F000~$FEFF、及び$FFF0~$FFFFは$FFE8はBANK-REGレジスタ($FFE8)のD0,D1と組み合せで指定
$F000~FEFFが別エリアに分かれているのでモニタとBASICが分離しているのかと思うとそうでもなさそうな感じ

 

▼PIA-BANKレジスタの初期化

電源オンの状態そのままではバンクスイッチによるカードの機能とエリアの設定変更はできないので、
バンクレジスタの初期化をしてから機能とエリアを設定する
(リセットスイッチを押した後もバンクレジスタの初期化が必要)


▼PIA-BANKレジスタによる裏RAMの使用方法メモ

ROMのサブルーチンを使うプログラムの場合は普段は標準RAM/ROMエリアで処理&待機して、必要な時に
裏RAMでプログラムを動作させ、ROMのサブルーチンを呼ぶ際は割込み禁止状態でROMにを使用し使い終わったら
割込みを戻してROM側で待機させる必要がありそう
→ROMのサブルーチンを使わない場合は裏RAMだけで完結できそう

MP-9718のサンプルプログラムに入出力用ROMサブルーチンを追加する実験
取説のサンプルプログラムに文字列出力とキーボードからの1行入力を追加
引数の必要ないサブルーチン、引数の必要なサブルーチン、戻り値のあるサブルーチンの実験

バンクで切り替わらないエリア $7000~ こちらをロードして裏RAMエリアにもプログラムをロード後に
TOBANKから実行

 

裏RAMエリアの$B000~ こちらをロード

エミュのデバッガ操作メモ
E FFC1 00
E FFC0 FF
E FFC1 04
E FFC0 F0
D B000

DN DEBUG.MOT
DL 0
D B000
R PC B000
T
G


動作確認

文字を表示した後、文字列を出力し、キーボードから入力した文字列を表示してL3のモニタに戻る

▼$F000~$FEFFのROMはモニターROMというわけではなさそう

バンク切り換えの必要ない$F000~$FEFFに1文字入力($F82C)、と1文字出力($F0D8)があったのでROMエリアの
バンク切り換えをしないプログラムで確認したところ1文字出力の$F0D8は使えるものの(最下部行のスクロールなし)
1文字入力はBASIC-ROMを使っているようで使用不可でした。
1文字出力($F0D8)も最下部行のスクロールなしで画面からはみ出て文字を出力すると暴走する!?
せっかくなら$F000~$FEFFが分かれているのならこのエリアは汎用で使えるモニタROMにしてほしかった^^;;;

実験プログラム
裏RAMの$B000~ ロード

1文字入力($F82C)を使うと割込が発生し結局は$E131にジャンプするためROMにバンク切換しないと使えない^^;;

動作確認

ROMに切り替えていないがAが出力される


▼標準RAMを経由した外部記憶へのLOAD/SAVE方法

裏RAMにはFDDやCMTは直接アクセスできないので標準RAM領域に転送してからLOAD/SAVEする


ベーシックマスタの情報をお探しの方は是非こちらからどうぞ → Amazon

FM-77用拡張スロットの組み立て

old68funさんから頂いたFM-7用拡張スロット基板を組み立てました。

以前作ったI/O&ROM/RAMディスクと接続した様子はこんな感じ^^

32P拡張スロットとROM/RAMディスクユニットを拡張50Pから取れるようになったので,
FM-77内部の32Pが2個確保できるようになりました^^
(I/O&ROM/RAMディスクユニットとの接続はSCSI用50Pフラットケーブルです)


続きを読む FM-77用拡張スロットの組み立て