2015.1.16

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

MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!


[第102回]


●VFTST1をコンバート

前回書きましたように、MYCPU80用のZB3DOS(CP/M互換DOS)のテストプログラムは、ND80Z3.5(ND80ZV)用に作成したものをそのまま使うつもりでしたが、全てインテルニーモニックに変更することにいたしました。
まだMYCPU80用のCP/M動作のテスト作業に入ったばかりでしたので、ザイログニーモニックのままでお見せしたテストプログラムは[第99回]のVFTST1と[第100回]のVFTST0−2の2本だけでした。
早めに気が付いてよかったです。

ザイログニーモニックで書いたプログラムもインテルニーモニックで書いたプログラムもアセンブルしてマシン語になってしまえば同じものになりますから、テストまでやり直さなくてもよいと思いますので、プログラムリストのみお見せすることにいたします。

下はVFTST1.TXTをインテルニーモニックに変更して作成したソースプログラムMVFTST1.TXTです。

; BDOS function 1 & 2 test for ZBDOS
;12/6/12 15/1/16 for MYCPU80 from vftst1
;
     ORG $0100
     FCALL=$0005
;
LOOP:MVI E,3F;?
        MVI C,02
        CALL FCALL          
        MVI C,01
        CALL FCALL
        CPI 1A;^z?
        RZ
        PUSH PSW
        MVI E,3D;=
        MVI C,02
        CALL FCALL
        POP PSW
        MOV D,A
        CALL HEX1
        MOV E,A
        MOV A,D
        RRC
        RRC
        RRC
        RRC
        CALL HEX1
        PUSH D
        MOV E,A
        MVI C,02
        CALL FCALL
        POP D
        MVI C,02
        CALL FCALL
        MVI E,0D
        MVI C,02
        CALL FCALL
        MVI E,0A
        MVI C,02
        CALL FCALL
        JMP LOOP
HEX1:ANI 0F
        ADI 30
        CPI 3A
        RC;0-9
        ADI 07;A-F
        RET     
;

下はMVFTST1.TXTを中日電工オリジナルの8080アセンブラASM80でアセンブルして出力したアセンブルリストです。

2015/1/16  18:51  mvftst1.txt
END=014C
              ; BDOS function 1 & 2 test for ZBDOS
              ;12/6/12 15/1/16 for MYCPU80 from vftst1
              ;
                   ORG $0100
                   FCALL=$0005
              ;
0100 1E3F     LOOP:MVI E,3F;?
0102 0E02       MVI C,02
0104 CD0500     CALL FCALL          
0107 0E01       MVI C,01
0109 CD0500     CALL FCALL
010C FE1A       CPI 1A;^z?
010E C8         RZ
010F F5         PUSH PSW
0110 1E3D       MVI E,3D;=
0112 0E02       MVI C,02
0114 CD0500     CALL FCALL
0117 F1         POP PSW
0118 57         MOV D,A
0119 CD4301     CALL HEX1
011C 5F         MOV E,A
011D 7A         MOV A,D
011E 0F         RRC
011F 0F         RRC
0120 0F         RRC
0121 0F         RRC
0122 CD4301     CALL HEX1
0125 D5         PUSH D
0126 5F         MOV E,A
0127 0E02       MVI C,02
0129 CD0500     CALL FCALL
012C D1         POP D
012D 0E02       MVI C,02
012F CD0500     CALL FCALL
0132 1E0D       MVI E,0D
0134 0E02       MVI C,02
0136 CD0500     CALL FCALL
0139 1E0A       MVI E,0A
013B 0E02       MVI C,02
013D CD0500     CALL FCALL
0140 C30001     JMP LOOP
0143 E60F     HEX1:ANI 0F
0145 C630       ADI 30
0147 FE3A       CPI 3A
0149 D8         RC;0-9
014A C607       ADI 07;A-F
014C C9         RET     
              ;
FCALL        =0005  HEX1         =0143  LOOP         =0100  

念のためにVFTST1のアセンブルリストと照合してマシン語プログラムが同じであることを確認いたしました。

●VFTST0−2をコンバート

次はVFTST0−2のコンバートです。
下はVFTST0−2.TXTをインテルニーモニックに変更して作成したソースプログラムMVFTS0−2.TXTです。

;;FUNCTION 0,1,2 TEST
;2013/5/4 5/5 2015/1/16 for MYCPU80 from VFTST0-2
;
        ORG $0100
     FCALL=$0005
;
START:MVI C,02
        MVI E,2A;'*'
        CALL FCALL
        MVI C,01
        CALL FCALL
        STA BUFF
        CPI 12;^R
        JZ RESET
        MVI C,02
        MVI E,3A;':'
        CALL FCALL
        MVI B,00
LOOP:LDA BUFF
        MVI C,02
        MOV E,A
        CALL FCALL
        DCR B
        JNZ LOOP
        MVI E,0D
        CALL FCALL
        MVI E,0A
        CALL FCALL
        JMP START
;
RESET:MVI C,00
        CALL FCALL
;
BUFF:NOP
;

下はMVFTS0−2.TXTのアセンブルリストです。

2015/1/16  18:54  mvfts0-2.txt
END=013C
              ;;FUNCTION 0,1,2 TEST
              ;2013/5/4 5/5 2015/1/16 for MYCPU80 from VFTST0-2
              ;
                ORG $0100
                   FCALL=$0005
              ;
0100 0E02     START:MVI C,02
0102 1E2A       MVI E,2A;'*'
0104 CD0500     CALL FCALL
0107 0E01       MVI C,01
0109 CD0500     CALL FCALL
010C 323C01     STA BUFF
010F FE12       CPI 12;^R
0111 CA3701     JZ RESET
0114 0E02       MVI C,02
0116 1E3A       MVI E,3A;':'
0118 CD0500     CALL FCALL
011B 0600       MVI B,00
011D 3A3C01   LOOP:LDA BUFF
0120 0E02       MVI C,02
0122 5F         MOV E,A
0123 CD0500     CALL FCALL
0126 05         DCR B
0127 C21D01     JNZ LOOP
012A 1E0D       MVI E,0D
012C CD0500     CALL FCALL
012F 1E0A       MVI E,0A
0131 CD0500     CALL FCALL
0134 C30001     JMP START
              ;
0137 0E00     RESET:MVI C,00
0139 CD0500     CALL FCALL
              ;
013C 00       BUFF:NOP
              ;
BUFF         =013C  FCALL        =0005  LOOP         =011D  
RESET        =0137  START        =0100  

こちらもVFTST0−2のアセンブルリストと照合してマシン語プログラムが同じであることを確認いたしました。

MYCPU80でCP/Mを![第102回]
2015.1.16upload

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