復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第56回]
●ファイル内容比較プログラム(2)
前回からの続きです。
前回はファイル内容比較プログラム(ftst6cmp.txt)のソースリストをお見せしました。
下はそれをZASM.COMでアセンブルしてバイナリファイルが作成されたときに同時に作成されたアセンブルリストです。
2012/3/10 21:25 ftst6cmp.txt END=8226 ; BDOS TEST6 COMPARE ;2012/3/7 ; ORG $8100 FCALL=$8005 FCBWK=$803B RECNO2=$805B FCB=$805C FCB2=$806C RECNO=$807C DMA1=$8080 DMA2=$8300 BYTECNTR=$8380 AWK=$8382 ; 8100 216C80 LD HL,FCB2 8103 113B80 LD DE,FCBWK 8106 0611 LD B,11;=17 8108 7E LOOP1:LD A,(HL) 8109 12 LD (DE),A 810A 23 INC HL 810B 13 INC DE 810C 05 DEC B 810D C20881 JP NZ,LOOP1 ; 8110 0E0F LD C,0F;open 8112 115C80 LD DE,FCB 8115 CD0580 CALL FCALL 8118 3C INC A;if FFH? 8119 CA7C81 JP Z,NOFILERR ; 811C 0E0F LD C,0F;open 811E 113B80 LD DE,FCBWK 8121 CD0580 CALL FCALL 8124 3C INC A;if FFH? 8125 CA7C81 JP Z,NOFILERR ; 8128 AF XOR A 8129 327C80 LD (RECNO),A 812C 325B80 LD (RECNO2),A 812F 218083 LD HL,BYTECNTR 8132 77 LD (HL),A 8133 23 INC HL 8134 77 LD (HL),A ; 8135 0E1A LOOP2:LD C,1A;DMA address set 8137 118080 LD DE,DMA1 813A CD0580 CALL FCALL 813D 0E14 LD C,14;read 813F 115C80 LD DE,FCB 8142 CD0580 CALL FCALL 8145 B7 OR A 8146 C28481 JP NZ,CMPEND;read end ; 8149 0E1A LD C,1A;DMA address set 814B 110083 LD DE,DMA2 814E CD0580 CALL FCALL 8151 0E14 LD C,14;read 8153 113B80 LD DE,FCBWK 8156 CD0580 CALL FCALL 8159 B7 OR A 815A C28481 JP NZ,CMPEND;read end ; 815D 0E80 LD C,80 815F 218080 LD HL,DMA1 8162 110083 LD DE,DMA2 8165 1A LOOP3:LD A,(DE) 8166 BE CP (HL) 8167 C48D81 CALL NZ,NOTEQ 816A 23 INC HL 816B 13 INC DE 816C E5 PUSH HL 816D 2A8083 LD HL,(BYTECNTR) 8170 23 INC HL 8171 228083 LD (BYTECNTR),HL 8174 E1 POP HL 8175 0D DEC C 8176 C26581 JP NZ,LOOP3 8179 C33581 JP LOOP2 ; 817C 111982 NOFILERR:LD DE,CANTOPN 817F 0E09 LD C,09 8181 CD0580 CALL FCALL 8184 0E1A CMPEND:LD C,1A;DMA address set 8186 118080 LD DE,DMA1 8189 CD0580 CALL FCALL 818C C9 RET ; 818D C5 NOTEQ:PUSH BC 818E D5 PUSH DE 818F E5 PUSH HL 8190 2A8083 LD HL,(BYTECNTR) 8193 CDD081 CALL HEX4DP 8196 CDC381 CALL SPDP 8199 E1 POP HL 819A 7E LD A,(HL) 819B 328283 LD (AWK),A 819E D1 POP DE 819F 1A LD A,(DE) 81A0 D5 PUSH DE 81A1 E5 PUSH HL 81A2 F5 PUSH AF 81A3 3A8283 LD A,(AWK) 81A6 CDE181 CALL B2HEXDP 81A9 3E2D LD A,2D;"-" 81AB CDC581 CALL ADP 81AE F1 POP AF 81AF CDE181 CALL B2HEXDP 81B2 CDB981 CALL CRLF 81B5 E1 POP HL 81B6 D1 POP DE 81B7 C1 POP BC 81B8 C9 RET ; ;CL & LF 81B9 3E0D CRLF:LD A,0D 81BB CDC581 CALL ADP 81BE 3E0A LD A,0A 81C0 C3C581 JP ADP ;space disp 81C3 3E20 SPDP:LD A,20 ;A disp 81C5 C5 ADP:PUSH BC 81C6 E5 PUSH HL 81C7 5F LD E,A 81C8 0E02 LD C,02 81CA CD0580 CALL FCALL 81CD E1 POP HL 81CE C1 POP BC 81CF C9 RET ;HL(bynary 2bytes) to asckii 4bytes & disp 81D0 C5 HEX4DP:PUSH BC 81D1 E5 PUSH HL 81D2 CDFA81 CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes 81D5 D5 PUSH DE 81D6 EB EX DE,HL 81D7 CDEC81 CALL DEDP 81DA D1 POP DE 81DB CDEC81 CALL DEDP 81DE E1 POP HL 81DF C1 POP BC 81E0 C9 RET ;A(binary) to asckii 2bytes HEX & disp 81E1 C5 B2HEXDP:PUSH BC 81E2 E5 PUSH HL 81E3 CD0082 CALL B2HEX2 81E6 CDEC81 CALL DEDP 81E9 E1 POP HL 81EA C1 POP BC 81EB C9 RET ; ;DE(asckii 2bytes) disp 81EC D5 DEDP:PUSH DE 81ED 5A LD E,D 81EE 0E02 LD C,02 81F0 CD0580 CALL FCALL 81F3 D1 POP DE 81F4 0E02 LD C,02 81F6 CD0580 CALL FCALL 81F9 C9 RET ; ;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE 81FA 7C B2HEX4:LD A,H 81FB CD0082 CALL B2HEX2 81FE EB EX DE,HL 81FF 7B LD A,E ;binary to hex, 1byte data to ascii 2charactors,A to DE 8200 F5 B2HEX2:PUSH AF 8201 0F RRCA 8202 0F RRCA 8203 0F RRCA 8204 0F RRCA 8205 CD0F82 CALL B2HEX1 8208 57 LD D,A 8209 F1 POP AF 820A CD0F82 CALL B2HEX1 820D 5F LD E,A 820E C9 RET ;binary to hex, low 4bit to ascii 1charactor 820F E60F B2HEX1:AND 0F 8211 C630 ADD A,30 8213 FE3A CP 3A 8215 D8 RET C;0-9 8216 C607 ADD A,07;A-F 8218 C9 RET ; 8219 63616E27 CANTOPN:"can'" 821D 74206F70 "t op" 8221 656E21 "en!" 8224 0D DB 0D 8225 0A DB 0A 8226 24 DB 24;$ ; ADP =81C5 AWK =8382 B2HEX1 =820F B2HEX2 =8200 B2HEX4 =81FA B2HEXDP =81E1 BYTECNTR =8380 CANTOPN =8219 CMPEND =8184 CRLF =81B9 DEDP =81EC DMA1 =8080 DMA2 =8300 FCALL =8005 FCB =805C FCB2 =806C FCBWK =803B HEX4DP =81D0 LOOP1 =8108 LOOP2 =8135 LOOP3 =8165 NOFILERR =817C NOTEQ =818D RECNO =807C RECNO2 =805B SPDP =81C3 |