2015.1.29

前へ
次へ
ホームページトップへ戻る

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;$
;

下はMFTST4のアセンブルリストです。

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  

●MFTST4の実行

「ワンボードマイコンでCP/Mを!」[第200回]と同じテストをしました。

MFTST4.TXTをMFTST4−1.TXTに名前を変えました。
その後で行なうテストが
MFTST4 MFTST4.TXT
では、同じファイル名になってしまってサンプルとしてはやや不適当かと思い、そのように名前を変えることにしたのです。

MFTST4 MFTST4−1.TXTを実行しました。

MFTST4−1.TXTの中身(MFTST4.TXTと同じ)がリスト表示されました。

MYCPU80でCP/Mを![第115回]
2015.1.29upload

前へ
次へ
ホームページトップへ戻る