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
|

