MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第115回]
●ファンクション0F、14
ファンクション0Fはファイルオープンです。
ファンクション14はシーケンシャルリードです。
上記のファンクションは「ワンボードマイコンでCP/Mを!」[第200回]でテストをしています。
テストプログラムはVFTST4です。
VFTST4はTYPEと同じ動作をします。
テキストファイルを読み込んでコンソール画面に表示します。
もとになったプログラムの説明は「ワンボードマイコンでCP/Mを!」[第47回]でしています。
いつものようにVFTST4のソースプログラムをインテルニーモニックに書き直してMFTST4を作りました。
●テストプログラムMFTST4
MFTST4のソースプログラムです。
; BDOS TEST4 TYPE ;2012/2/28 8/17 8/18 ; ORG $0100 FCALL=$0005 FCB=$005C RECNO=$007C DMA=$0080 ; MVI C,0F;open LXI D,FCB CALL FCALL INR A;if FFH? JZ ERR XRA A STA RECNO ; LOOP1:MVI C,14;read LXI D,FCB CALL FCALL ORA A RNZ;read end ; LXI H,DMA LOOP2:MOV E,M MOV A,E CPI 1A;EOF RZ MVI C,02 PUSH H CALL FCALL POP H INR L JNZ LOOP2 JMP LOOP1 ; ERR:LXI D,ERRMSG MVI C,09 CALL FCALL RET ERRMSG:"can'" "t op" "en" DB 0D DB 0A DB 24;$ ; |
2015/1/28 23:17 mftst4.txt END=0145 ; BDOS TEST4 TYPE ;2012/2/28 8/17 8/18 ; ORG $0100 FCALL=$0005 FCB=$005C RECNO=$007C DMA=$0080 ; 0100 0E0F MVI C,0F;open 0102 115C00 LXI D,FCB 0105 CD0500 CALL FCALL 0108 3C INR A;if FFH? 0109 CA3001 JZ ERR 010C AF XRA A 010D 327C00 STA RECNO ; 0110 0E14 LOOP1:MVI C,14;read 0112 115C00 LXI D,FCB 0115 CD0500 CALL FCALL 0118 B7 ORA A 0119 C0 RNZ;read end ; 011A 218000 LXI H,DMA 011D 5E LOOP2:MOV E,M 011E 7B MOV A,E 011F FE1A CPI 1A;EOF 0121 C8 RZ 0122 0E02 MVI C,02 0124 E5 PUSH H 0125 CD0500 CALL FCALL 0128 E1 POP H 0129 2C INR L 012A C21D01 JNZ LOOP2 012D C31001 JMP LOOP1 ; 0130 113901 ERR:LXI D,ERRMSG 0133 0E09 MVI C,09 0135 CD0500 CALL FCALL 0138 C9 RET 0139 63616E27 ERRMSG:"can'" 013D 74206F70 "t op" 0141 656E "en" 0143 0D DB 0D 0144 0A DB 0A 0145 24 DB 24;$ ; DMA =0080 ERR =0130 ERRMSG =0139 FCALL =0005 FCB =005C LOOP1 =0110 LOOP2 =011D RECNO =007C |