S1-CP/M80 移植作戦 その14 データ転送環境を準備^^

スポンサーリンク

Z80カードのハード廻りはOKになったのでソフト作成の準備としてS1にデータをロードする環境を準備します

現在私が使っている開発環境はCygwin上に作ったクロスアセンブラで
m6809-as
Z88dk
を使用しています

デバッガはS1エミュレータのデバッガ
なので完全なクロス開発環境です。

S1実機でのデバッグとS1エミュでデバッグでは使いやすさが全然違うのである程度エミュ上でデバッグしてから
バイナリをS1実機にロードする方法で進める予定です

S1のメモリへのロード方法は
①ディスクイメージを実イメージに書き戻す方法(DITT)
②シリアルポート経由で直接データを送る方法
が考えられますが、
貴重なS1/30を使い始めるのはもう少しソフトが出来てからの方が良さそうなので、
シリアルポート経由でメモリにデータをロードできるメモリローダを作ってみました。
ロード先の物理アドレスを指定する方法としてS1のモニタで設定してもいいのですが、
面倒なのでメモリローダ内に物理メモリの先頭番地を指定できるようにしてみました^^

そこで、このメモリローダをS1に入力しないといけないのですが、
最初はダンプを入力するしかないので最小サイズになるまで整理・・^^
もう少し減らせる可能性もありそうですが、とりあえず204バイトになりました。
これならS1モニタのEコマンドでも楽々入力できます

かなりのポンコツソフトですが一応使えるので晒しておきます

位置独立ではありません D000番地からロードして実行できます^^

使い方RS232Cでバイナリ通信できるターミナルと接続しN81で1200bpsにセットします
S1モニタでバイナリを入力しD000から実行

実行すると1が出るので物理アドレスの先頭番地を2桁で入力
2が出ると先頭アドレスを4桁で入力
3が出ると終了するデータ長を入力
Rが出ると受信待ちになるので外部からバイナリを送り込む
(このメモリローダは物理アドレスの先頭番地をインクリしないので最大でロードできるサイズは最大で4KBです)

とりあえず、これがあれば4KBまでのデータは自由にロードできるので、カセットにセーブしておきます

メモリに自由にデータがロードできるようになったので、整理していないフルバージョンのメモリローダを転送してCMTに保存
こちらは位置独立なので任意の番地からロード可能です

こちらもかなりのポンコツプログラムですが晒してみます(アドバイス下さい^^)

使い方は
①Physical Memory Top Address で物理メモリ先頭を入力
②Receive Top Address で該当の4KBエリアの先頭番地を入力
③Receive Length でロードしたいデータ長を入力
④*** Receive Readyになったらデータ受信待ち
⑤指定バイト数受信するかBREAKキーを押すことで *** Receive Completeになる

例えば
Physical Memory Top Address = 00
Receive Top Address = 0010
Receive Length =  0020
だとマップ領域0が00で物理メモリ$00000から割当され、その$0010から$20バイト分データをロードします
(系列はそのままFを使っています)

このメモリローダは最大4KBしか扱えないので4KB以上のロードはバイナリを分割して数回行う必要があります。
まぁ、私のような素人はこれでも十分役に立ちそうです^^

こんな感じでTeratermとの組み合わせが良さそう^^

そんなメモリローダ整備の記録・・・

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。 本文に全角文字を2文字以上含めて下さい (スパム対策)