復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第474回]
●I/Oバイトのテスト
このところ大分県のH様にお願いしておりますE−80試作3号機のテストの様子などについてお伝えしております。
H様からは毎日のようにテスト結果のメールをいただいています。
もう感謝感謝の毎日です。
H様からはE−80試作機のテストに入る前に、ND80ZVのZB3DOS(CP/M互換DOS)の動作テストについても沢山のメールをいただいています。
そちらのほうも順次ご紹介させていただきたいと思っているのですが、実は今、私はE−80ミニコンの製品版のためのアートワーク作業に追われておりまして、それとは別に複数の作業も進めなければならないことになって、なかなかホームページの作業までは手が回らず、毎日後手にまわっております。
今回は少し前にH様からいただいたI/Oバイトについてのテストログをご紹介いたします。
logfile nd80zlog\09040925.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/cpm loading zbds4k.bin ...19c1(6593)bytes loaded,from CC00 to E5C0 drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>z:vftst7 --------------------------------------------------------------@ iobyte=00 version HL=0022 A>zb3 end of ZBDOS -----------------------------------------------------------A >dm@0000,000f 0000 C3 03 E2 00 00 C3 06 D4-AA AA 54 55 40 5B AB A2 テ....テ.ヤェェTU@[ォ「 >/cpm,d drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>stat val: ------------------------------------------------------------B Temp R/O Disk: d:=R/O Set Indicator: d:filename.typ $R/O $R/W $SYS $DIR Disk Status : DSK: d:DSK: User Status : USR: Iobyte Assign: CON: = TTY: CRT: BAT: UC1: RDR: = TTY: PTR: UR1: UR2: PUN: = TTY: PTP: UP1: UP2: LST: = TTY: CRT: LPT: UL1: A>stat dev: ------------------------------------------------------------C CON: is TTY: RDR: is TTY: PUN: is TTY: LST: is TTY: A>stat lst:=lpt: -------------------------------------------------------D A>stat rdr:=ptr: -------------------------------------------------------E A>stat dev: ------------------------------------------------------------F CON: is TTY: RDR: is PTR: PUN: is TTY: LST: is LPT: A>z:vftst7 -------------------------------------------------------------G iobyte=84 version HL=0022 A>zb3 end of ZBDOS >dm@0000,000f ----------------------------------------------------------H 0000 C3 03 E2 84 00 C3 06 D4-AA AA 54 55 40 5B AB A2 テ....テ.ヤェェTU@[ォ「 >/cpm,d drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>z:vftst7 -------------------------------------------------------------I iobyte=00 version HL=0022 A>z:vftst8 -------------------------------------------------------------J set iobyte 55 55 set iobyte AA AA set iobyte FF FF A>stat dev: ------------------------------------------------------------K CON: is UC1: RDR: is UR2: PUN: is UP2: LST: is UL1: A>zb3 end of ZBDOS >/cpm,d drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>stat dev: ------------------------------------------------------------L CON: is TTY: RDR: is TTY: PUN: is TTY: LST: is TTY: A>z:vftst8 -------------------------------------------------------------M set iobyte 55 55 set iobyte AA AA set iobyte FF FF A>stat dev: ------------------------------------------------------------N CON: is UC1: RDR: is UR2: PUN: is UP2: LST: is UL1: A> ---------------------------------------------------------------------O A>stat dev: CON: is TTY: RDR: is TTY: PUN: is TTY: LST: is TTY: A>/exit > 0000 00C3 - リモート接続を終了しました logfile closed at Wed Sep 04 09:43:25 2013 |
H様からいただいたメールでは、ログにつけた番号のひとつひとつに説明までつけていただきました。
以下にそのまま転載させていただきます。
@で、VFTST7によりIOBYTEを表示
Aで、ZB3BASICにもどりメモリーダンプ。IOBYTEは、00h
B互換DOSに戻り、変更可能なデバイスを表示
Cで、現在のデバイスを表示
Dで、LST:のデバイスをLPT:に変更
Eで、RDR:のデバイスをPTR:に変更
Fで、現在のデバイスを表示
Gで、VFTST7によりIOBYTEを表示
Hで、ZB3BASICにもどりメモリーダンプ。IOBYTEは、84h
Iで、互換DOSに戻り、VFTST7によりIOBYTEを表示
Jで、VFTST8により、IOBYTEをセット
Kで、現在のデバイスを表示
Lで、現在のデバイスを表示
Mで、VFTST8により、IOBYTEをセット
Nで、現在のデバイスを表示
Oで、Ctrl+Cを入力
Pで、現在のデバイスを表示
ということで、それぞれの操作は正常に終了しました。
●I/Oバイトがクリアされてしまいます
H様からのメールには、このあと続けてI/Oバイトについての問題点が指摘されていました。
処理結果に気になるところがありました。
HとI、KとL、NとPの間です。
この間は、ウォームブートと思うのですがIOBYTEが初期化されております。
IOBYTEは、ウォームブート時には、カレントドライブ同様に以前のまま引き継がれるのが正しいのではないでしょうか。?
現在、CP/M互換DOSでは利用されていませんがアプリケーションでは利用可能ですし、Ctrl+Pがサポートされれば影響は出てくると思います。
bios.txt(下のリスト)は、BIOSの該当部分の逆アセンブルリストです。
ちなみに、CP/M互換DOS(仮RAMディスク版)[第155回]では、初期化されておりません。
logfile nd80zlog\09041342.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/cpm loading zbds4k.bin ...19c1(6593)bytes loaded,from CC00 to E5C0 drive D ................................ drive C ................................ drive B ................................ drive A ................................ A>zsid ZSID VERS 1.4 #le27a E27A LD A,FF ;コールド ブート E27C OUT 9C,A E27E XOR A E27F LD (E279),A E282 LD (0004),A E285 INC A E286 JP E28B E289 LD A,80 ;ウォームブート E28B LD (E26B),A E28E LD SP,F800 E291 LD A,FF #l E293 OUT 9C,A E295 LD HL,0038 E298 LD A,C3 E29A LD (HL),A E29B INC HL E29C LD DE,E303 E29F LD (HL),E E2A0 INC HL E2A1 LD (HL),D E2A2 LD HL,0000 E2A5 LD A,C3 #l E2A7 LD (HL),A E2A8 INC HL E2A9 LD DE,E203 E2AC LD (HL),E E2AD INC HL E2AE LD (HL),D E2AF LD HL,0003 E2B2 XOR A E2B3 LD (HL),A ;IOBYTE E2B4 INC HL E2B5 INC HL #l E2B6 LD A,C3 E2B8 LD (HL),A E2B9 INC HL E2BA LD DE,D406 E2BD LD (HL),E E2BE INC HL E2BF LD (HL),D E2C0 LD A,(E26B) E2C3 OR A E2C4 JP Z,E2DD E2C7 EX DE,HL # A>/exit > 0000 00C3 - リモート接続を終了しました logfile closed at Wed Sep 04 13:46:49 2013 |
このメールの次にいただいたメールでは、以下のアドバイスもいただきました。
現在、(I/Oバイトの)クリヤのタイミングは、コールドブートとウォームブートの共通ルーチンにありますから、コールドブートの中に移動するだけで良いと思います。以前のプログラムのI/Oバイトをクリアする部分はコールドブートのルーチンにありました。
H様。
ご指摘有難うございました。
全く気がつきませんでした。
今はちょっと時間がありませんので少し先になりますが、ご指摘いただいた点についてはなるべく早く修正するようにいたします。
ご協力感謝いたします。
今後ともよろしくお願いいたします。
ワンボードマイコンでCP/Mを![第474回]
2013.9.12upload
前へ
次へ
ホームページトップへ戻る