These are notes I made during development of a version of CP/M 3.0 BIOS for the Altair 8800 that supports Altair async boards and floppy disk controller and also an IDE/CF card. The goal was to be able to support two 8Mb hard drives using an IDE interface. The hard drives can be either traditional magnetic disks or solid state, like a compact flash CF card.
My development system has an 8080 CPU, Douglas FDC+, Eberhard 88-2SIOJP and Monahan IDE/CF interface card.
Most of this document is code flow, single-stepped using SID. I've made notes as I go.
To make CPMLDR.com: Use Douglas BIOS.asm, SCBLDR.asm and Digital Research CPMLDR.rel RMAC BIOS RMAC SCBLDR LINK CPMLDR[L100]=CPMLDR,SCBLDR,BIOS That creates a CPMLDR.COM file for FDC+ 330K floppies. Debugging under CP/M: SID starting address: AB00 under CP/M 3.0, CC00 under CP/M 2.2 Found by running SID, and then using the L5 command, which shows the following instruction at location 0005: 0005 JMP AB00 (under CP/M 3.0) or 0005 JMP CC00 (under CP/M 2.2) Build CPM3.SYS like this: Using Parham BIOSKRN3.asm, SCB3.asm. BOOT3.asm, CHARIO3.asm, MOVE3.asm, DRVTBL3.asm, FDC3.asm and IDE3.asm RMAC BIOSKRN3 RMAC SCB3 RMAC BOOT3 RMAC CHARIO3 RMAC MOVE3 RMAC DRVTBL3 RMAC FDC3 RMAC IDE3 LINK BIOS3[q,os]=BIOSKRN3,SCB3,BOOT3,CHARIO3,MOVE3,DRVTBL3,FDC3,IDE3 Creates BIOS3.SPR and BIOS3.SYM (Actually, the "q" switch is probably unnecessary since the symbol table generated is useless) GENCPM: A9 or CA for debugging, FE for production When GENCPM was set for topmem=A9, the floppy-only CPM3.SYS reported this: CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A8D1 (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP A93F (home) 8E1B JMP A910 (seldsk) 8E1E JMP A942 (settrk) 8E21 JMP A948 (setsec) 8E24 JMP A94E (setdma) 8E27 JMP A965 (read) 8E2A JMP A97B (write) 8E2D JMP 8F0D (listst) 8E30 JMP A95A (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9104 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP A99C (multio) 8E48 JMP A9A0 (flush) 8E4B JMP 92BF (move) 8E4E JMP 9094 (time) 8E51 JMP 9020 (selmem) 8E54 JMP A956 (setbnk) 8E57 JMP 92BE (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) BIOS 8E00 1C00; login message starts at 90ED. ==> Created BIOS3.sym using PIP BIOS3.sym=BIOSKRN3.sym,SCB3.sym,BOOT3.sym,CHARIO3.sym,MOVE3.sym,DRVTBL3.sym,FLP3.sym,IDE3.sym ==> Don't do this ^ but instead use the BIOS3.sym file created by the linker. ==> Actually, neither symbol file has any correlation with what's actually loaded into memory. GENCPM relocates everything so the symbols aren't useful. SID CPMLDR.COM BIOS3.SYM CP/M 3 SID - Version 3.0 SYMBOLS NEXT MSZE PC END 2500 2500 0100 B62D #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A8D1 ... #PA8D1 #G8E00 01 PASS A8D1 -Z-EI A=42 B=0001 D=6F00 H=005E S=027F P=A8D1 LXI SP,8ECD *A8D4 #TW#100 -Z-EI A=42 B=0001 D=6F00 H=005E S=8ECD P=A8D4 MVI C,0F -Z-EI A=42 B=000F D=6F00 H=005E S=8ECD P=A8D6 PUSH B -Z-EI A=42 B=000F D=6F00 H=005E S=8ECB P=A8D7 CALL 9104 ---EI A=1E B=0F0F D=9127 H=9291 S=8ECB P=A8DA POP B ---EI A=1E B=000F D=9127 H=9291 S=8ECD P=A8DB DCR C ----I A=1E B=000E D=9127 H=9291 S=8ECD P=A8DC JP A8D6 ----I A=1E B=000E D=9127 H=9291 S=8ECD P=A8D6 PUSH B ----I A=1E B=000E D=9127 H=9291 S=8ECB P=A8D7 CALL 9104 ----I A=1C B=0E0E D=9125 H=9291 S=8ECB P=A8DA POP B ----I A=1C B=000E D=9125 H=9291 S=8ECD P=A8DB DCR C ----I A=1C B=000D D=9125 H=9291 S=8ECD P=A8DC JP A8D6 ----I A=1C B=000D D=9125 H=9291 S=8ECD P=A8D6 PUSH B ----I A=1C B=000D D=9125 H=9291 S=8ECB P=A8D7 CALL 9104 ----I A=1A B=0D0D D=9123 H=9291 S=8ECB P=A8DA POP B ----I A=1A B=000D D=9123 H=9291 S=8ECD P=A8DB DCR C ---EI A=1A B=000C D=9123 H=9291 S=8ECD P=A8DC JP A8D6 ---EI A=1A B=000C D=9123 H=9291 S=8ECD P=A8D6 PUSH B ---EI A=1A B=000C D=9123 H=9291 S=8ECB P=A8D7 CALL 9104 ---EI A=18 B=0C0C D=9121 H=9291 S=8ECB P=A8DA POP B ---EI A=18 B=000C D=9121 H=9291 S=8ECD P=A8DB DCR C ----I A=18 B=000B D=9121 H=9291 S=8ECD P=A8DC JP A8D6 ----I A=18 B=000B D=9121 H=9291 S=8ECD P=A8D6 PUSH B ----I A=18 B=000B D=9121 H=9291 S=8ECB P=A8D7 CALL 9104 ----I A=16 B=0B0B D=911F H=9291 S=8ECB P=A8DA POP B ----I A=16 B=000B D=911F H=9291 S=8ECD P=A8DB DCR C ---EI A=16 B=000A D=911F H=9291 S=8ECD P=A8DC JP A8D6 ---EI A=16 B=000A D=911F H=9291 S=8ECD P=A8D6 PUSH B ---EI A=16 B=000A D=911F H=9291 S=8ECB P=A8D7 CALL 9104 ---EI A=14 B=0A0A D=911D H=9291 S=8ECB P=A8DA POP B ---EI A=14 B=000A D=911D H=9291 S=8ECD P=A8DB DCR C ---EI A=14 B=0009 D=911D H=9291 S=8ECD P=A8DC JP A8D6 ---EI A=14 B=0009 D=911D H=9291 S=8ECD P=A8D6 PUSH B ---EI A=14 B=0009 D=911D H=9291 S=8ECB P=A8D7 CALL 9104 ---EI A=12 B=0909 D=911B H=9291 S=8ECB P=A8DA POP B ---EI A=12 B=0009 D=911B H=9291 S=8ECD P=A8DB DCR C ----I A=12 B=0008 D=911B H=9291 S=8ECD P=A8DC JP A8D6 ----I A=12 B=0008 D=911B H=9291 S=8ECD P=A8D6 PUSH B ----I A=12 B=0008 D=911B H=9291 S=8ECB P=A8D7 CALL 9104 ----I A=10 B=0808 D=9119 H=9291 S=8ECB P=A8DA POP B ----I A=10 B=0008 D=9119 H=9291 S=8ECD P=A8DB DCR C ----I A=10 B=0007 D=9119 H=9291 S=8ECD P=A8DC JP A8D6 ----I A=10 B=0007 D=9119 H=9291 S=8ECD P=A8D6 PUSH B ----I A=10 B=0007 D=9119 H=9291 S=8ECB P=A8D7 CALL 9104 ----- A=0E B=0707 D=9117 H=9291 S=8ECB P=A8DA POP B ----- A=0E B=0007 D=9117 H=9291 S=8ECD P=A8DB DCR C ---EI A=0E B=0006 D=9117 H=9291 S=8ECD P=A8DC JP A8D6 ---EI A=0E B=0006 D=9117 H=9291 S=8ECD P=A8D6 PUSH B ---EI A=0E B=0006 D=9117 H=9291 S=8ECB P=A8D7 CALL 9104 ---E- A=0C B=0606 D=9115 H=9291 S=8ECB P=A8DA POP B ---E- A=0C B=0006 D=9115 H=9291 S=8ECD P=A8DB DCR C ---EI A=0C B=0005 D=9115 H=9291 S=8ECD P=A8DC JP A8D6 ---EI A=0C B=0005 D=9115 H=9291 S=8ECD P=A8D6 PUSH B ---EI A=0C B=0005 D=9115 H=9291 S=8ECB P=A8D7 CALL 9104 ---E- A=0A B=0505 D=9113 H=9291 S=8ECB P=A8DA POP B ---E- A=0A B=0005 D=9113 H=9291 S=8ECD P=A8DB DCR C ----I A=0A B=0004 D=9113 H=9291 S=8ECD P=A8DC JP A8D6 ----I A=0A B=0004 D=9113 H=9291 S=8ECD P=A8D6 PUSH B ----I A=0A B=0004 D=9113 H=9291 S=8ECB P=A8D7 CALL 9104 ----- A=08 B=0404 D=9111 H=9291 S=8ECB P=A8DA POP B ----- A=08 B=0004 D=9111 H=9291 S=8ECD P=A8DB DCR C ---EI A=08 B=0003 D=9111 H=9291 S=8ECD P=A8DC JP A8D6 ---EI A=08 B=0003 D=9111 H=9291 S=8ECD P=A8D6 PUSH B ---EI A=08 B=0003 D=9111 H=9291 S=8ECB P=A8D7 CALL 9104 ---E- A=06 B=0303 D=910F H=9291 S=8ECB P=A8DA POP B ---E- A=06 B=0003 D=910F H=9291 S=8ECD P=A8DB DCR C ----I A=06 B=0002 D=910F H=9291 S=8ECD P=A8DC JP A8D6 ----I A=06 B=0002 D=910F H=9291 S=8ECD P=A8D6 PUSH B ----I A=06 B=0002 D=910F H=9291 S=8ECB P=A8D7 CALL 9104 ----- A=04 B=0202 D=910D H=9291 S=8ECB P=A8DA POP B ----- A=04 B=0002 D=910D H=9291 S=8ECD P=A8DB DCR C ----I A=04 B=0001 D=910D H=9291 S=8ECD P=A8DC JP A8D6 ----I A=04 B=0001 D=910D H=9291 S=8ECD P=A8D6 PUSH B ----I A=04 B=0001 D=910D H=9291 S=8ECB P=A8D7 CALL 9104 ----- A=FF B=0101 D=910B H=923E S=8ECB P=A8DA POP B ----- A=FF B=0001 D=910B H=923E S=8ECD P=A8DB DCR C -Z-EI A=FF B=0000 D=910B H=923E S=8ECD P=A8DC JP A8D6 -Z-EI A=FF B=0000 D=910B H=923E S=8ECD P=A8D6 PUSH B -Z-EI A=FF B=0000 D=910B H=923E S=8ECB P=A8D7 CALL 9104 -Z-E- A=00 B=0000 D=9109 H=91C3 S=8ECB P=A8DA POP B -Z-E- A=00 B=0000 D=9109 H=91C3 S=8ECD P=A8DB DCR C --ME- A=00 B=00FF D=9109 H=91C3 S=8ECD P=A8DC JP A8D6 --ME- A=00 B=00FF D=9109 H=91C3 S=8ECD P=A8DF CALL 9037 (init in boot3) SID CPMLDR.COM CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 B62D #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A8D1 ... #P9037 #G8E00 01 PASS 9037 --ME- A=00 B=00FF D=9109 H=91C3 S=8ECB P=9037 LXI H,8000 *903A #TW#100 --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=903A SHLD 8DBE --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=903D SHLD 8DC0 --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=9040 LXI H,4000 --ME- A=00 B=00FF D=9109 H=4000 S=8ECB P=9043 SHLD 8DC6 --ME- A=00 B=00FF D=9109 H=4000 S=8ECB P=9046 LXI H,2000 --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=9049 SHLD 8DC2 --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=904C SHLD 8DC4 --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=904F LXI H,90ED (sign-on message) --ME- A=00 B=00FF D=9109 H=90ED S=8ECB P=9052 JMP 8FB2 (jmp ?pmsg in bioskrn3) --ME- A=00 B=00FF D=9109 H=90ED S=8ECB P=8FB2 PUSH B --ME- A=00 B=00FF D=9109 H=90ED S=8EC9 P=8FB3 PUSH D --ME- A=00 B=00FF D=9109 H=90ED S=8EC7 P=8FB4 MOV A,M --ME- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB5 ORA A ----- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB6 JZ 8FC3 (pmsg$exit) ----- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB9 MOV C,A ----- A=0D B=000D D=9109 H=90ED S=8EC7 P=8FBA PUSH H ----- A=0D B=000D D=9109 H=90ED S=8EC5 P=8FBB CALL 8E0C (call ?conout) SID CPMLDR.COM CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 B62D #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A8D1 ... #P8E0C #G8E00 01 PASS 8E0C ----- A=0D B=000D D=9109 H=90ED S=8EC3 P=8E0C JMP 8ED5 (jmp conout in bioskrn3) *8ED5 #TW#100 ----- A=0D B=000D D=9109 H=90ED S=8EC3 P=8ED5 LHLD 8DC0 (@covec) ----- A=0D B=000D D=9109 H=8000 S=8EC3 P=8ED8 JMP 8EE4 (jmp out$scan) ----- A=0D B=000D D=9109 H=8000 S=8EC3 P=8EE4 MVI B,00 ----- A=0D B=000D D=9109 H=8000 S=8EC3 P=8EE6 DAD H C---- A=0D B=000D D=9109 H=0000 S=8EC3 P=8EE7 JNC 8EFA (not$out$device) C---- A=0D B=000D D=9109 H=0000 S=8EC3 P=8EEA PUSH H C---- A=0D B=000D D=9109 H=0000 S=8EC1 P=8EEB PUSH B C---- A=0D B=000D D=9109 H=0000 S=8EBF P=8EEC CALL 8F27 (not$out$ready: call coster, ora a) --ME- A=FF B=000D D=9195 H=91D5 S=8EBF P=8EEF ORA A --ME- A=FF B=000D D=9195 H=91D5 S=8EBF P=8EF0 JZ 8EEC (not$out$ready) --ME- A=FF B=000D D=9195 H=91D5 S=8EBF P=8EF3 POP B --ME- A=FF B=000D D=9195 H=91D5 S=8EC1 P=8EF4 PUSH B --ME- A=FF B=000D D=9195 H=91D5 S=8EBF P=8EF5 CALL 914B (call ?co in chario3) SID CPMLDR.COM CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 B62D #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A8D1 ... #P914B #G8E00 01 PASS 914B --ME- A=FF B=000D D=9195 H=91D5 S=8EBD P=914B CALL 91B4 (call dev$dispatch in chario3) *91B4 #TW#100 --ME- A=FF B=000D D=9195 H=91D5 S=8EBB P=91B4 MOV A,B --ME- A=00 B=000D D=9195 H=91D5 S=8EBB P=91B5 STA 9292 (dev$code) --ME- A=00 B=000D D=9195 H=91D5 S=8EBB P=91B8 ADD A -Z-E- A=00 B=000D D=9195 H=91D5 S=8EBB P=91B9 POP H -Z-E- A=00 B=000D D=9195 H=914E S=8EBD P=91BA MOV E,A -Z-E- A=00 B=000D D=9100 H=914E S=8EBD P=91BB MVI D,00 -Z-E- A=00 B=000D D=0000 H=914E S=8EBD P=91BD DAD D -Z-E- A=00 B=000D D=0000 H=914E S=8EBD P=91BE MOV E,M -Z-E- A=00 B=000D D=00DD H=914E S=8EBD P=91BF INX H -Z-E- A=00 B=000D D=00DD H=914F S=8EBD P=91C0 MOV D,M -Z-E- A=00 B=000D D=91DD H=914F S=8EBD P=91C1 XCHG -Z-E- A=00 B=000D D=914F H=91DD S=8EBD P=91C2 PCHL <== run off rails. dev handler address is junk. =========================================================================================
So CONIO3.asm needs to be modified to interface with 2SIO boards.
New build: ========================================================================================= A>b:sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA #L8E00 8E00 JMP A8D1 ... #P9037 #G8E00 01 PASS 9037 (init) --ME- A=00 B=00FF D=9109 H=91D0 S=8ECB P=9037 LXI H,8000 *903A #TW#1000 --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=903A SHLD 8DBE --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=903D SHLD 8DC0 --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=9040 LXI H,4000 --ME- A=00 B=00FF D=9109 H=4000 S=8ECB P=9043 SHLD 8DC6 --ME- A=00 B=00FF D=9109 H=4000 S=8ECB P=9046 LXI H,2000 --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=9049 SHLD 8DC2 --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=904C SHLD 8DC4 --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=904F LXI H,90ED (sign-on message) --ME- A=00 B=00FF D=9109 H=90ED S=8ECB P=9052 JMP 8FB2 (jmp ?pmsg in bioskrn3) --ME- A=00 B=00FF D=9109 H=90ED S=8ECB P=8FB2 PUSH B --ME- A=00 B=00FF D=9109 H=90ED S=8EC9 P=8FB3 PUSH D --ME- A=00 B=00FF D=9109 H=90ED S=8EC7 P=8FB4 MOV A,M --ME- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB5 ORA A ----- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB6 JZ 8FC3 (pmsg$exit) ----- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB9 MOV C,A ----- A=0D B=000D D=9109 H=90ED S=8EC7 P=8FBA PUSH H ----- A=0D B=000D D=9109 H=90ED S=8EC5 P=8FBB CALL 8E0C (call ?cono) <== Look inside there. Not printing characters properly. Not hanging though. -Z-E- A=00 B=010D D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010D D=915C H=90ED S=8EC7 P=8FBF INX H -Z-E- A=00 B=010D D=915C H=90EE S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=010D D=915C H=90EE S=8EC7 P=8FB4 MOV A,M -Z-E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB5 ORA A ---E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB6 JZ 8FC3 ---E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB9 MOV C,A ---E- A=0A B=010A D=915C H=90EE S=8EC7 P=8FBA PUSH H ---E- A=0A B=010A D=915C H=90EE S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=010A D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010A D=915C H=90EE S=8EC7 P=8FBF INX H -Z-E- A=00 B=010A D=915C H=90EF S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=010A D=915C H=90EF S=8EC7 P=8FB4 MOV A,M -Z-E- A=0A B=010A D=915C H=90EF S=8EC7 P=8FB5 ORA A ---E- A=0A B=010A D=915C H=90EF S=8EC7 P=8FB6 JZ 8FC3 ---E- A=0A B=010A D=915C H=90EF S=8EC7 P=8FB9 MOV C,A ---E- A=0A B=010A D=915C H=90EF S=8EC7 P=8FBA PUSH H ---E- A=0A B=010A D=915C H=90EF S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=010A D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010A D=915C H=90EF S=8EC7 P=8FBF INX H -Z-E- A=00 B=010A D=915C H=90F0 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=010A D=915C H=90F0 S=8EC7 P=8FB4 MOV A,M -Z-E- A=43 B=010A D=915C H=90F0 S=8EC7 P=8FB5 ORA A ----- A=43 B=010A D=915C H=90F0 S=8EC7 P=8FB6 JZ 8FC3 ----- A=43 B=010A D=915C H=90F0 S=8EC7 P=8FB9 MOV C,A ----- A=43 B=0143 D=915C H=90F0 S=8EC7 P=8FBA PUSH H ----- A=43 B=0143 D=915C H=90F0 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0143 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0143 D=915C H=90F0 S=8EC7 P=8FBF INX H -Z-E- A=00 B=0143 D=915C H=90F1 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0143 D=915C H=90F1 S=8EC7 P=8FB4 MOV A,M -Z-E- A=50 B=0143 D=915C H=90F1 S=8EC7 P=8FB5 ORA A ---E- A=50 B=0143 D=915C H=90F1 S=8EC7 P=8FB6 JZ 8FC3 ---E- A=50 B=0143 D=915C H=90F1 S=8EC7 P=8FB9 MOV C,A ---E- A=50 B=0150 D=915C H=90F1 S=8EC7 P=8FBA PUSH H ---E- A=50 B=0150 D=915C H=90F1 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0150 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0150 D=915C H=90F1 S=8EC7 P=8FBF INX H -Z-E- A=00 B=0150 D=915C H=90F2 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0150 D=915C H=90F2 S=8EC7 P=8FB4 MOV A,M -Z-E- A=2F B=0150 D=915C H=90F2 S=8EC7 P=8FB5 ORA A ----- A=2F B=0150 D=915C H=90F2 S=8EC7 P=8FB6 JZ 8FC3 ----- A=2F B=0150 D=915C H=90F2 S=8EC7 P=8FB9 MOV C,A ----- A=2F B=012F D=915C H=90F2 S=8EC7 P=8FBA PUSH H ----- A=2F B=012F D=915C H=90F2 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=012F D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=012F D=915C H=90F2 S=8EC7 P=8FBF INX H -Z-E- A=00 B=012F D=915C H=90F3 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=012F D=915C H=90F3 S=8EC7 P=8FB4 MOV A,M -Z-E- A=4D B=012F D=915C H=90F3 S=8EC7 P=8FB5 ORA A ---E- A=4D B=012F D=915C H=90F3 S=8EC7 P=8FB6 JZ 8FC3 ---E- A=4D B=012F D=915C H=90F3 S=8EC7 P=8FB9 MOV C,A ---E- A=4D B=014D D=915C H=90F3 S=8EC7 P=8FBA PUSH H ---E- A=4D B=014D D=915C H=90F3 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=014D D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=014D D=915C H=90F3 S=8EC7 P=8FBF INX H -Z-E- A=00 B=014D D=915C H=90F4 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=014D D=915C H=90F4 S=8EC7 P=8FB4 MOV A,M -Z-E- A=20 B=014D D=915C H=90F4 S=8EC7 P=8FB5 ORA A ----- A=20 B=014D D=915C H=90F4 S=8EC7 P=8FB6 JZ 8FC3 ----- A=20 B=014D D=915C H=90F4 S=8EC7 P=8FB9 MOV C,A ----- A=20 B=0120 D=915C H=90F4 S=8EC7 P=8FBA PUSH H ----- A=20 B=0120 D=915C H=90F4 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0120 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0120 D=915C H=90F4 S=8EC7 P=8FBF INX H -Z-E- A=00 B=0120 D=915C H=90F5 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0120 D=915C H=90F5 S=8EC7 P=8FB4 MOV A,M -Z-E- A=50 B=0120 D=915C H=90F5 S=8EC7 P=8FB5 ORA A ---E- A=50 B=0120 D=915C H=90F5 S=8EC7 P=8FB6 JZ 8FC3 ---E- A=50 B=0120 D=915C H=90F5 S=8EC7 P=8FB9 MOV C,A ---E- A=50 B=0150 D=915C H=90F5 S=8EC7 P=8FBA PUSH H ---E- A=50 B=0150 D=915C H=90F5 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0150 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0150 D=915C H=90F5 S=8EC7 P=8FBF INX H -Z-E- A=00 B=0150 D=915C H=90F6 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0150 D=915C H=90F6 S=8EC7 P=8FB4 MOV A,M -Z-E- A=6C B=0150 D=915C H=90F6 S=8EC7 P=8FB5 ORA A ---E- A=6C B=0150 D=915C H=90F6 S=8EC7 P=8FB6 JZ 8FC3 ---E- A=6C B=0150 D=915C H=90F6 S=8EC7 P=8FB9 MOV C,A ---E- A=6C B=016C D=915C H=90F6 S=8EC7 P=8FBA PUSH H ---E- A=6C B=016C D=915C H=90F6 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=016C D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=016C D=915C H=90F6 S=8EC7 P=8FBF INX H -Z-E- A=00 B=016C D=915C H=90F7 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=016C D=915C H=90F7 S=8EC7 P=8FB4 MOV A,M -Z-E- A=75 B=016C D=915C H=90F7 S=8EC7 P=8FB5 ORA A ----- A=75 B=016C D=915C H=90F7 S=8EC7 P=8FB6 JZ 8FC3 ----- A=75 B=016C D=915C H=90F7 S=8EC7 P=8FB9 MOV C,A ----- A=75 B=0175 D=915C H=90F7 S=8EC7 P=8FBA PUSH H ----- A=75 B=0175 D=915C H=90F7 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0175 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0175 D=915C H=90F7 S=8EC7 P=8FBF INX H -Z-E- A=00 B=0175 D=915C H=90F8 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0175 D=915C H=90F8 S=8EC7 P=8FB4 MOV A,M -Z-E- A=73 B=0175 D=915C H=90F8 S=8EC7 P=8FB5 ORA A ----- A=73 B=0175 D=915C H=90F8 S=8EC7 P=8FB6 JZ 8FC3 ----- A=73 B=0175 D=915C H=90F8 S=8EC7 P=8FB9 MOV C,A ----- A=73 B=0173 D=915C H=90F8 S=8EC7 P=8FBA PUSH H ----- A=73 B=0173 D=915C H=90F8 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0173 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0173 D=915C H=90F8 S=8EC7 P=8FBF INX H -Z-E- A=00 B=0173 D=915C H=90F9 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0173 D=915C H=90F9 S=8EC7 P=8FB4 MOV A,M -Z-E- A=20 B=0173 D=915C H=90F9 S=8EC7 P=8FB5 ORA A ----- A=20 B=0173 D=915C H=90F9 S=8EC7 P=8FB6 JZ 8FC3 ----- A=20 B=0173 D=915C H=90F9 S=8EC7 P=8FB9 MOV C,A ----- A=20 B=0120 D=915C H=90F9 S=8EC7 P=8FBA PUSH H ----- A=20 B=0120 D=915C H=90F9 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0120 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0120 D=915C H=90F9 S=8EC7 P=8FBF INX H -Z-E- A=00 B=0120 D=915C H=90FA S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0120 D=915C H=90FA S=8EC7 P=8FB4 MOV A,M -Z-E- A=76 B=0120 D=915C H=90FA S=8EC7 P=8FB5 ORA A ----- A=76 B=0120 D=915C H=90FA S=8EC7 P=8FB6 JZ 8FC3 ----- A=76 B=0120 D=915C H=90FA S=8EC7 P=8FB9 MOV C,A ----- A=76 B=0176 D=915C H=90FA S=8EC7 P=8FBA PUSH H ----- A=76 B=0176 D=915C H=90FA S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0176 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0176 D=915C H=90FA S=8EC7 P=8FBF INX H -Z-E- A=00 B=0176 D=915C H=90FB S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0176 D=915C H=90FB S=8EC7 P=8FB4 MOV A,M -Z-E- A=33 B=0176 D=915C H=90FB S=8EC7 P=8FB5 ORA A ---E- A=33 B=0176 D=915C H=90FB S=8EC7 P=8FB6 JZ 8FC3 ---E- A=33 B=0176 D=915C H=90FB S=8EC7 P=8FB9 MOV C,A ---E- A=33 B=0133 D=915C H=90FB S=8EC7 P=8FBA PUSH H ---E- A=33 B=0133 D=915C H=90FB S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0133 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0133 D=915C H=90FB S=8EC7 P=8FBF INX H -Z-E- A=00 B=0133 D=915C H=90FC S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0133 D=915C H=90FC S=8EC7 P=8FB4 MOV A,M -Z-E- A=2E B=0133 D=915C H=90FC S=8EC7 P=8FB5 ORA A ---E- A=2E B=0133 D=915C H=90FC S=8EC7 P=8FB6 JZ 8FC3 ---E- A=2E B=0133 D=915C H=90FC S=8EC7 P=8FB9 MOV C,A ---E- A=2E B=012E D=915C H=90FC S=8EC7 P=8FBA PUSH H ---E- A=2E B=012E D=915C H=90FC S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=012E D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=012E D=915C H=90FC S=8EC7 P=8FBF INX H -Z-E- A=00 B=012E D=915C H=90FD S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=012E D=915C H=90FD S=8EC7 P=8FB4 MOV A,M -Z-E- A=30 B=012E D=915C H=90FD S=8EC7 P=8FB5 ORA A ---E- A=30 B=012E D=915C H=90FD S=8EC7 P=8FB6 JZ 8FC3 ---E- A=30 B=012E D=915C H=90FD S=8EC7 P=8FB9 MOV C,A ---E- A=30 B=0130 D=915C H=90FD S=8EC7 P=8FBA PUSH H ---E- A=30 B=0130 D=915C H=90FD S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0130 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0130 D=915C H=90FD S=8EC7 P=8FBF INX H -Z-E- A=00 B=0130 D=915C H=90FE S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0130 D=915C H=90FE S=8EC7 P=8FB4 MOV A,M -Z-E- A=68 B=0130 D=915C H=90FE S=8EC7 P=8FB5 ORA A ----- A=68 B=0130 D=915C H=90FE S=8EC7 P=8FB6 JZ 8FC3 ----- A=68 B=0130 D=915C H=90FE S=8EC7 P=8FB9 MOV C,A ----- A=68 B=0168 D=915C H=90FE S=8EC7 P=8FBA PUSH H ----- A=68 B=0168 D=915C H=90FE S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0168 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0168 D=915C H=90FE S=8EC7 P=8FBF INX H -Z-E- A=00 B=0168 D=915C H=90FF S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0168 D=915C H=90FF S=8EC7 P=8FB4 MOV A,M -Z-E- A=64 B=0168 D=915C H=90FF S=8EC7 P=8FB5 ORA A ----- A=64 B=0168 D=915C H=90FF S=8EC7 P=8FB6 JZ 8FC3 ----- A=64 B=0168 D=915C H=90FF S=8EC7 P=8FB9 MOV C,A ----- A=64 B=0164 D=915C H=90FF S=8EC7 P=8FBA PUSH H ----- A=64 B=0164 D=915C H=90FF S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=0164 D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=0164 D=915C H=90FF S=8EC7 P=8FBF INX H -Z-E- A=00 B=0164 D=915C H=9100 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=0164 D=915C H=9100 S=8EC7 P=8FB4 MOV A,M -Z-E- A=0D B=0164 D=915C H=9100 S=8EC7 P=8FB5 ORA A ----- A=0D B=0164 D=915C H=9100 S=8EC7 P=8FB6 JZ 8FC3 ----- A=0D B=0164 D=915C H=9100 S=8EC7 P=8FB9 MOV C,A ----- A=0D B=010D D=915C H=9100 S=8EC7 P=8FBA PUSH H ----- A=0D B=010D D=915C H=9100 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=010D D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010D D=915C H=9100 S=8EC7 P=8FBF INX H -Z-E- A=00 B=010D D=915C H=9101 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=010D D=915C H=9101 S=8EC7 P=8FB4 MOV A,M -Z-E- A=0A B=010D D=915C H=9101 S=8EC7 P=8FB5 ORA A ---E- A=0A B=010D D=915C H=9101 S=8EC7 P=8FB6 JZ 8FC3 ---E- A=0A B=010D D=915C H=9101 S=8EC7 P=8FB9 MOV C,A ---E- A=0A B=010A D=915C H=9101 S=8EC7 P=8FBA PUSH H ---E- A=0A B=010A D=915C H=9101 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=010A D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010A D=915C H=9101 S=8EC7 P=8FBF INX H -Z-E- A=00 B=010A D=915C H=9102 S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=010A D=915C H=9102 S=8EC7 P=8FB4 MOV A,M -Z-E- A=0A B=010A D=915C H=9102 S=8EC7 P=8FB5 ORA A ---E- A=0A B=010A D=915C H=9102 S=8EC7 P=8FB6 JZ 8FC3 ---E- A=0A B=010A D=915C H=9102 S=8EC7 P=8FB9 MOV C,A ---E- A=0A B=010A D=915C H=9102 S=8EC7 P=8FBA PUSH H ---E- A=0A B=010A D=915C H=9102 S=8EC5 P=8FBB CALL 8E0C -Z-E- A=00 B=010A D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010A D=915C H=9102 S=8EC7 P=8FBF INX H -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FC0 JMP 8FB4 (pmsg$loop) -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FB4 MOV A,M -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FB5 ORA A -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FB6 JZ 8FC3 (pmsg$exit) -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FC3 POP D -Z-E- A=00 B=010A D=9109 H=9103 S=8EC9 P=8FC4 POP B -Z-E- A=00 B=00FF D=9109 H=9103 S=8ECB P=8FC5 RET (done with init) -Z-E- A=00 B=00FF D=9109 H=9103 S=8ECD P=A898 LXI B,1000 -Z-E- A=00 B=1000 D=9109 H=9103 S=8ECD P=A89B LXI H,927B -Z-E- A=00 B=1000 D=9109 H=927B S=8ECD P=A89E PUSH B -Z-E- A=00 B=1000 D=9109 H=927B S=8ECB P=A89F MOV E,M -Z-E- A=00 B=1000 D=91A5 H=927B S=8ECB P=A8A0 INX H -Z-E- A=00 B=1000 D=91A5 H=927C S=8ECB P=A8A1 MOV D,M -Z-E- A=00 B=1000 D=92A5 H=927C S=8ECB P=A8A2 INX H -Z-E- A=00 B=1000 D=92A5 H=927D S=8ECB P=A8A3 MOV A,E -Z-E- A=A5 B=1000 D=92A5 H=927D S=8ECB P=A8A4 ORA D --ME- A=B7 B=1000 D=92A5 H=927D S=8ECB P=A8A5 JZ A8BD --ME- A=B7 B=1000 D=92A5 H=927D S=8ECB P=A8A8 PUSH H --ME- A=B7 B=1000 D=92A5 H=927D S=8EC9 P=A8A9 XCHG --ME- A=B7 B=1000 D=927D H=92A5 S=8EC9 P=A8AA DCX H --ME- A=B7 B=1000 D=927D H=92A4 S=8EC9 P=A8AB DCX H --ME- A=B7 B=1000 D=927D H=92A3 S=8EC9 P=A8AC MOV A,M --ME- A=00 B=1000 D=927D H=92A3 S=8EC9 P=A8AD STA A975 --ME- A=00 B=1000 D=927D H=92A3 S=8EC9 P=A8B0 MOV A,C --ME- A=00 B=1000 D=927D H=92A3 S=8EC9 P=A8B1 STA A974 --ME- A=00 B=1000 D=927D H=92A3 S=8EC9 P=A8B4 DCX H --ME- A=00 B=1000 D=927D H=92A2 S=8EC9 P=A8B5 MOV D,M --ME- A=00 B=1000 D=937D H=92A2 S=8EC9 P=A8B6 DCX H --ME- A=00 B=1000 D=937D H=92A1 S=8EC9 P=A8B7 MOV E,M --ME- A=00 B=1000 D=9322 H=92A1 S=8EC9 P=A8B8 XCHG --ME- A=00 B=1000 D=92A1 H=9322 S=8EC9 P=A8B9 CALL 8FB1 --ME- A=00 B=1000 D=92A1 H=9322 S=8EC9 P=A8BC POP H --ME- A=00 B=1000 D=92A1 H=927D S=8ECB P=A8BD POP B --ME- A=00 B=1000 D=92A1 H=927D S=8ECD P=A8BE INR C ----- A=00 B=1001 D=92A1 H=927D S=8ECD P=A8BF DCR B ---E- A=00 B=0F01 D=92A1 H=927D S=8ECD P=A8C0 JNZ A89E ---E- A=00 B=0F01 D=92A1 H=927D S=8ECD P=A89E PUSH B ---E- A=00 B=0F01 D=92A1 H=927D S=8ECB P=A89F MOV E,M ---E- A=00 B=0F01 D=92C8 H=927D S=8ECB P=A8A0 INX H ---E- A=00 B=0F01 D=92C8 H=927E S=8ECB P=A8A1 MOV D,M ---E- A=00 B=0F01 D=92C8 H=927E S=8ECB P=A8A2 INX H ---E- A=00 B=0F01 D=92C8 H=927F S=8ECB P=A8A3 MOV A,E ---E- A=C8 B=0F01 D=92C8 H=927F S=8ECB P=A8A4 ORA D --M-- A=DA B=0F01 D=92C8 H=927F S=8ECB P=A8A5 JZ A8BD --M-- A=DA B=0F01 D=92C8 H=927F S=8ECB P=A8A8 PUSH H --M-- A=DA B=0F01 D=92C8 H=927F S=8EC9 P=A8A9 XCHG --M-- A=DA B=0F01 D=927F H=92C8 S=8EC9 P=A8AA DCX H --M-- A=DA B=0F01 D=927F H=92C7 S=8EC9 P=A8AB DCX H --M-- A=DA B=0F01 D=927F H=92C6 S=8EC9 P=A8AC MOV A,M --M-- A=01 B=0F01 D=927F H=92C6 S=8EC9 P=A8AD STA A975 --M-- A=01 B=0F01 D=927F H=92C6 S=8EC9 P=A8B0 MOV A,C --M-- A=01 B=0F01 D=927F H=92C6 S=8EC9 P=A8B1 STA A974 --M-- A=01 B=0F01 D=927F H=92C6 S=8EC9 P=A8B4 DCX H --M-- A=01 B=0F01 D=927F H=92C5 S=8EC9 P=A8B5 MOV D,M --M-- A=01 B=0F01 D=937F H=92C5 S=8EC9 P=A8B6 DCX H --M-- A=01 B=0F01 D=937F H=92C4 S=8EC9 P=A8B7 MOV E,M --M-- A=01 B=0F01 D=9322 H=92C4 S=8EC9 P=A8B8 XCHG --M-- A=01 B=0F01 D=92C4 H=9322 S=8EC9 P=A8B9 CALL 8FB1 --M-- A=01 B=0F01 D=92C4 H=9322 S=8EC9 P=A8BC POP H --M-- A=01 B=0F01 D=92C4 H=927F S=8ECB P=A8BD POP B --M-- A=01 B=0F01 D=92C4 H=927F S=8ECD P=A8BE INR C ----- A=01 B=0F02 D=92C4 H=927F S=8ECD P=A8BF DCR B ----I A=01 B=0E02 D=92C4 H=927F S=8ECD P=A8C0 JNZ A89E ----I A=01 B=0E02 D=92C4 H=927F S=8ECD P=A89E PUSH B ----I A=01 B=0E02 D=92C4 H=927F S=8ECB P=A89F MOV E,M ----I A=01 B=0E02 D=9200 H=927F S=8ECB P=A8A0 INX H ----I A=01 B=0E02 D=9200 H=9280 S=8ECB P=A8A1 MOV D,M ----I A=01 B=0E02 D=8E00 H=9280 S=8ECB P=A8A2 INX H ----I A=01 B=0E02 D=8E00 H=9281 S=8ECB P=A8A3 MOV A,E ----I A=00 B=0E02 D=8E00 H=9281 S=8ECB P=A8A4 ORA D --ME- A=8E B=0E02 D=8E00 H=9281 S=8ECB P=A8A5 JZ A8BD --ME- A=8E B=0E02 D=8E00 H=9281 S=8ECB P=A8A8 PUSH H --ME- A=8E B=0E02 D=8E00 H=9281 S=8EC9 P=A8A9 XCHG --ME- A=8E B=0E02 D=9281 H=8E00 S=8EC9 P=A8AA DCX H --ME- A=8E B=0E02 D=9281 H=8DFF S=8EC9 P=A8AB DCX H --ME- A=8E B=0E02 D=9281 H=8DFE S=8EC9 P=A8AC MOV A,M --ME- A=06 B=0E02 D=9281 H=8DFE S=8EC9 P=A8AD STA A975 --ME- A=06 B=0E02 D=9281 H=8DFE S=8EC9 P=A8B0 MOV A,C --ME- A=02 B=0E02 D=9281 H=8DFE S=8EC9 P=A8B1 STA A974 --ME- A=02 B=0E02 D=9281 H=8DFE S=8EC9 P=A8B4 DCX H --ME- A=02 B=0E02 D=9281 H=8DFD S=8EC9 P=A8B5 MOV D,M --ME- A=02 B=0E02 D=6F81 H=8DFD S=8EC9 P=A8B6 DCX H --ME- A=02 B=0E02 D=6F81 H=8DFC S=8EC9 P=A8B7 MOV E,M --ME- A=02 B=0E02 D=6F7B H=8DFC S=8EC9 P=A8B8 XCHG --ME- A=02 B=0E02 D=8DFC H=6F7B S=8EC9 P=A8B9 CALL 8FB1 <== waiting for keyboard input. Once a key is pressed, we see the message, "CPMLDR error: failed to open CPM3.SYS" ========================================================================================= SID CPMLDR.COM CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P8E0C (calls ?cono, which jumps to conout) #G8E00 01 PASS 8E0C ----- A=0D B=000D D=9109 H=90ED S=8EC3 P=8E0C JMP 8ED5 (conout) *8ED5 #TW#10 ----- A=0D B=000D D=9109 H=90ED S=8EC3 P=8ED5 LHLD 8DC0 (@covec) ----- A=0D B=000D D=9109 H=8000 S=8EC3 P=8ED8 JMP 8EE4 (out$scan) ----- A=0D B=000D D=9109 H=8000 S=8EC3 P=8EE4 MVI B,00 ----- A=0D B=000D D=9109 H=8000 S=8EC3 P=8EE6 DAD H C---- A=0D B=000D D=9109 H=0000 S=8EC3 P=8EE7 JNC 8EFA (not$out$device) C---- A=0D B=000D D=9109 H=0000 S=8EC3 P=8EEA PUSH H C---- A=0D B=000D D=9109 H=0000 S=8EC1 P=8EEB PUSH B C---- A=0D B=000D D=9109 H=0000 S=8EBF P=8EEC CALL 8F27 (coster) ----- A=FF B=000D D=91A2 H=9201 S=8EBF P=8EEF ORA A --ME- A=FF B=000D D=91A2 H=9201 S=8EBF P=8EF0 JZ 8EEC (not$out$ready) *8EF3 #TW#10 --ME- A=FF B=000D D=91A2 H=9201 S=8EBF P=8EF3 POP B --ME- A=FF B=000D D=91A2 H=9201 S=8EC1 P=8EF4 PUSH B --ME- A=FF B=000D D=91A2 H=9201 S=8EBF P=8EF5 CALL 9158 (?co) -Z-E- A=00 B=000D D=915C H=9225 S=8EBF P=8EF8 POP B -Z-E- A=00 B=000D D=915C H=9225 S=8EC1 P=8EF9 POP H -Z-E- A=00 B=000D D=915C H=0000 S=8EC3 P=8EFA INR B ----- A=00 B=010D D=915C H=0000 S=8EC3 P=8EFB MOV A,H ----- A=00 B=010D D=915C H=0000 S=8EC3 P=8EFC ORA L -Z-E- A=00 B=010D D=915C H=0000 S=8EC3 P=8EFD JNZ 8EE6 (co$next) -Z-E- A=00 B=010D D=915C H=0000 S=8EC3 P=8F00 RET <== Back to 8FBE, returned from conout *8FBE #TW#10 -Z-E- A=00 B=010D D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010D D=915C H=90ED S=8EC7 P=8FBF INX H -Z-E- A=00 B=010D D=915C H=90EE S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=010D D=915C H=90EE S=8EC7 P=8FB4 MOV A,M -Z-E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB5 ORA A ---E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB6 JZ 8FC3 ---E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB9 MOV C,A ---E- A=0A B=010A D=915C H=90EE S=8EC7 P=8FBA PUSH H ---E- A=0A B=010A D=915C H=90EE S=8EC5 P=8FBB CALL 8E0C 01 PASS 8E0C ---E- A=0A B=010A D=915C H=90EE S=8EC3 P=8E0C JMP 8ED5 *8ED5 # =========================================================================================
Inside conout (8ED5), we have one jump to out$scan and two calls within that.
The jump is to 8EE4 (out$scan).
The first call is to 8F27 (coster).
Second call is to 9158 (?co).
Sign-on message is at 90ED.
...so let's examine ?co at 9158.
========================================================================================= SID CPMLDR.COM CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P9158 (calls ?co, which calls dev$dispatch at 91C1) #G8E00 01 PASS 9158 #TW#14 --ME- A=FF B=000D D=91A2 H=9201 S=8EBD P=9158 CALL 91C1 (dev$dispatch) --ME- A=FF B=000D D=91A2 H=9201 S=8EBB P=91C1 MOV A,B --ME- A=00 B=000D D=91A2 H=9201 S=8EBB P=91C2 STA 9237 --ME- A=00 B=000D D=91A2 H=9201 S=8EBB P=91C5 ADD A -Z-E- A=00 B=000D D=91A2 H=9201 S=8EBB P=91C6 POP H -Z-E- A=00 B=000D D=91A2 H=915B S=8EBD P=91C7 MOV E,A -Z-E- A=00 B=000D D=9100 H=915B S=8EBD P=91C8 MVI D,00 -Z-E- A=00 B=000D D=0000 H=915B S=8EBD P=91CA DAD D -Z-E- A=00 B=000D D=0000 H=915B S=8EBD P=91CB MOV E,M -Z-E- A=00 B=000D D=0025 H=915B S=8EBD P=91CC INX H -Z-E- A=00 B=000D D=0025 H=915C S=8EBD P=91CD MOV D,M -Z-E- A=00 B=000D D=9225 H=915C S=8EBD P=91CE XCHG -Z-E- A=00 B=000D D=915C H=9225 S=8EBD P=91CF PCHL -Z-E- A=00 B=000D D=915C H=9225 S=8EBD P=9225 OUT 11 *9227 =========================================================================================
Looks good as far as selecting the output device, but the accumulator doesn't have the character to print. Not sure about the 00 accumulator - being the same as a null terminator - so doesn't iterate through all chars in the sign-on message string or if there are other things wrong, causing the program to run off the rails after the 9158 (?co) passpoint below.
========================================================================================= #TW -Z-E- A=00 B=000D D=915C H=9225 S=8EBD P=9227 RET -Z-E- A=00 B=000D D=915C H=9225 S=8EBF P=8EF8 POP B -Z-E- A=00 B=000D D=915C H=9225 S=8EC1 P=8EF9 POP H -Z-E- A=00 B=000D D=915C H=0000 S=8EC3 P=8EFA INR B ----- A=00 B=010D D=915C H=0000 S=8EC3 P=8EFB MOV A,H ----- A=00 B=010D D=915C H=0000 S=8EC3 P=8EFC ORA L -Z-E- A=00 B=010D D=915C H=0000 S=8EC3 P=8EFD JNZ 8EE6 -Z-E- A=00 B=010D D=915C H=0000 S=8EC3 P=8F00 RET -Z-E- A=00 B=010D D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010D D=915C H=90ED S=8EC7 P=8FBF INX H -Z-E- A=00 B=010D D=915C H=90EE S=8EC7 P=8FC0 JMP 8FB4 -Z-E- A=00 B=010D D=915C H=90EE S=8EC7 P=8FB4 MOV A,M -Z-E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB5 ORA A ---E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB6 JZ 8FC3 ---E- A=0A B=010D D=915C H=90EE S=8EC7 P=8FB9 MOV C,A ---E- A=0A B=010A D=915C H=90EE S=8EC7 P=8FBA PUSH H ---E- A=0A B=010A D=915C H=90EE S=8EC5 P=8FBB CALL 8E0C 01 PASS 9158 --ME- A=FF B=000A D=91A2 H=9201 S=8EBD P=9158 CALL 91C1 =========================================================================================
...and then off the rails.
Modified CHARIO3.asm to add a MOV A,C instruction in DEV$DISPATCH.
That fixed CHARIO3, so now this BIOS can talk.
Upon booting (without SID and CPMLDR.COM) - just straight from the
GENCPM'ed floppy -
this is what I now see:
========================================================================================= CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA CP/M Plus v3.0hd CP/M Error On @: Read/Only Disk =========================================================================================
Troubleshooting with debugger:
========================================================================================= SID CPMLDR.COM CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A888 (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP A8F6 (home) 8E1B JMP A8C7 (seldsk) 8E1E JMP A8F9 (settrk) 8E21 JMP A8FF (setsec) 8E24 JMP A905 (setdma) 8E27 JMP A91C (read) 8E2A JMP A932 (write) 8E2D JMP 8F0D (listst) 8E30 JMP A911 (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9104 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP A953 (multio) 8E48 JMP A957 (flush) 8E4B JMP 9276 (move) 8E4E JMP 9094 (time) 8E51 JMP 9020 (selmem) 8E54 JMP A90D (setbnk) 8E57 JMP 9275 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) #PA8C7 (seldsk) #PA8F9 (settrk) #PA8FF (setsec) #PA905 (setdma) #PA91C (read) #G8E00 CP/M Plus v3.0hd CP/M Error On @: Read/Only Disk 01 PASS A8C7 -Z-E- A=00 B=0000 D=0000 H=0000 S=6FDE P=A8C7 MOV A,C *A8C8 =========================================================================================
...so we get this error without ever running any of the functions seldsk, settrk, setsec, setdma or read.
========================================================================================= SID CPMLDR.COM CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P9037 <== init #G8E00 01 PASS 9037 --ME- A=00 B=00FF D=9109 H=91D1 S=8ECB P=9037 LXI H,8000 (dev 0) *903A #TW#10 --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=903A SHLD 8DBE (@civec) --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=903D SHLD 8DC0 (@covec) --ME- A=00 B=00FF D=9109 H=8000 S=8ECB P=9040 LXI H,4000 (dev 1) --ME- A=00 B=00FF D=9109 H=4000 S=8ECB P=9043 SHLD 8DC6 (@lovec) --ME- A=00 B=00FF D=9109 H=4000 S=8ECB P=9046 LXI H,2000 (dev 2) --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=9049 SHLD 8DC2 (@aivec) --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=904C SHLD 8DC4 (@aovec) --ME- A=00 B=00FF D=9109 H=2000 S=8ECB P=904F LXI H,90ED (sign-on message) --ME- A=00 B=00FF D=9109 H=90ED S=8ECB P=9052 JMP 8FB2 (?pmsg) --ME- A=00 B=00FF D=9109 H=90ED S=8ECB P=8FB2 PUSH B *8FB3 #TW#.... --ME- A=00 B=00FF D=9109 H=90ED S=8EC9 P=8FB3 PUSH D --ME- A=00 B=00FF D=9109 H=90ED S=8EC7 P=8FB4 MOV A,M --ME- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB5 ORA A ----- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB6 JZ 8FC3 (pmsg$exit) ----- A=0D B=00FF D=9109 H=90ED S=8EC7 P=8FB9 MOV C,A ----- A=0D B=000D D=9109 H=90ED S=8EC7 P=8FBA PUSH H ----- A=0D B=000D D=9109 H=90ED S=8EC5 P=8FBB CALL 8E0C (call ?conout) -Z-E- A=00 B=010D D=915C H=0000 S=8EC5 P=8FBE POP H -Z-E- A=00 B=010D D=915C H=90ED S=8EC7 P=8FBF INX H -Z-E- A=00 B=010D D=915C H=90EE S=8EC7 P=8FC0 JMP 8FB4 =========================================================================================
... (print all of the sign-on message)
========================================================================================= #TW#10 -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FB5 ORA A -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FB6 JZ 8FC3 -Z-E- A=00 B=010A D=915C H=9103 S=8EC7 P=8FC3 POP D -Z-E- A=00 B=010A D=9109 H=9103 S=8EC9 P=8FC4 POP B -Z-E- A=00 B=00FF D=9109 H=9103 S=8ECB P=8FC5 RET <== Done with init -Z-E- A=00 B=00FF D=9109 H=9103 S=8ECD P=A899 LXI B,1000 -Z-E- A=00 B=1000 D=9109 H=9103 S=8ECD P=A89C LXI H,927C (lxi h, @dtbl) -Z-E- A=00 B=1000 D=9109 H=927C S=8ECD P=A89F PUSH B (d$init$loop) -Z-E- A=00 B=1000 D=9109 H=927C S=8ECB P=A8A0 MOV E,M -Z-E- A=00 B=1000 D=91A6 H=927C S=8ECB P=A8A1 INX H *A8A2 #TW#10 -Z-E- A=00 B=1000 D=91A6 H=927D S=8ECB P=A8A2 MOV D,M -Z-E- A=00 B=1000 D=92A6 H=927D S=8ECB P=A8A3 INX H -Z-E- A=00 B=1000 D=92A6 H=927E S=8ECB P=A8A4 MOV A,E -Z-E- A=A6 B=1000 D=92A6 H=927E S=8ECB P=A8A5 ORA D --M-- A=B6 B=1000 D=92A6 H=927E S=8ECB P=A8A6 JZ A8BE (d$init$next) --M-- A=B6 B=1000 D=92A6 H=927E S=8ECB P=A8A9 PUSH H --M-- A=B6 B=1000 D=92A6 H=927E S=8EC9 P=A8AA XCHG (dph addess in HL) --M-- A=B6 B=1000 D=927E H=92A6 S=8EC9 P=A8AB DCX H --M-- A=B6 B=1000 D=927E H=92A5 S=8EC9 P=A8AC DCX H --M-- A=B6 B=1000 D=927E H=92A4 S=8EC9 P=A8AD MOV A,M *A8AE #TW#10 --M-- A=00 B=1000 D=927E H=92A4 S=8EC9 P=A8AE STA A976 (@RDRV) --M-- A=00 B=1000 D=927E H=92A4 S=8EC9 P=A8B1 MOV A,C --M-- A=00 B=1000 D=927E H=92A4 S=8EC9 P=A8B2 STA A975 (@ADRV) --M-- A=00 B=1000 D=927E H=92A4 S=8EC9 P=A8B5 DCX H --M-- A=00 B=1000 D=927E H=92A3 S=8EC9 P=A8B6 MOV D,M --M-- A=00 B=1000 D=937E H=92A3 S=8EC9 P=A8B7 DCX H --M-- A=00 B=1000 D=937E H=92A2 S=8EC9 P=A8B8 MOV E,M --M-- A=00 B=1000 D=9323 H=92A2 S=8EC9 P=A8B9 XCHG (drive 0 init pointer) --M-- A=00 B=1000 D=92A2 H=9323 S=8EC9 P=A8BA CALL 8FB1 (ipchl - call drive init 0) --M-- A=00 B=1000 D=92A2 H=9323 S=8EC9 P=A8BD POP H *A8BE #TW#10 --M-- A=00 B=1000 D=92A2 H=927E S=8ECB P=A8BE POP B (d$init$next) --M-- A=00 B=1000 D=92A2 H=927E S=8ECD P=A8BF INR C ----- A=00 B=1001 D=92A2 H=927E S=8ECD P=A8C0 DCR B ---E- A=00 B=0F01 D=92A2 H=927E S=8ECD P=A8C1 JNZ A89F (d$init$loop) ---E- A=00 B=0F01 D=92A2 H=927E S=8ECD P=A89F PUSH B ---E- A=00 B=0F01 D=92A2 H=927E S=8ECB P=A8A0 MOV E,M ---E- A=00 B=0F01 D=92C9 H=927E S=8ECB P=A8A1 INX H ---E- A=00 B=0F01 D=92C9 H=927F S=8ECB P=A8A2 MOV D,M ---E- A=00 B=0F01 D=92C9 H=927F S=8ECB P=A8A3 INX H ---E- A=00 B=0F01 D=92C9 H=9280 S=8ECB P=A8A4 MOV A,E *A8A5 #TW#10 ---E- A=C9 B=0F01 D=92C9 H=9280 S=8ECB P=A8A5 ORA D --ME- A=DB B=0F01 D=92C9 H=9280 S=8ECB P=A8A6 JZ A8BE --ME- A=DB B=0F01 D=92C9 H=9280 S=8ECB P=A8A9 PUSH H --ME- A=DB B=0F01 D=92C9 H=9280 S=8EC9 P=A8AA XCHG --ME- A=DB B=0F01 D=9280 H=92C9 S=8EC9 P=A8AB DCX H --ME- A=DB B=0F01 D=9280 H=92C8 S=8EC9 P=A8AC DCX H --ME- A=DB B=0F01 D=9280 H=92C7 S=8EC9 P=A8AD MOV A,M --ME- A=01 B=0F01 D=9280 H=92C7 S=8EC9 P=A8AE STA A976 --ME- A=01 B=0F01 D=9280 H=92C7 S=8EC9 P=A8B1 MOV A,C --ME- A=01 B=0F01 D=9280 H=92C7 S=8EC9 P=A8B2 STA A975 *A8B5 #TW#10 --ME- A=01 B=0F01 D=9280 H=92C7 S=8EC9 P=A8B5 DCX H --ME- A=01 B=0F01 D=9280 H=92C6 S=8EC9 P=A8B6 MOV D,M --ME- A=01 B=0F01 D=9380 H=92C6 S=8EC9 P=A8B7 DCX H --ME- A=01 B=0F01 D=9380 H=92C5 S=8EC9 P=A8B8 MOV E,M --ME- A=01 B=0F01 D=9323 H=92C5 S=8EC9 P=A8B9 XCHG --ME- A=01 B=0F01 D=92C5 H=9323 S=8EC9 P=A8BA CALL 8FB1 (ipchl - 1) --ME- A=01 B=0F01 D=92C5 H=9323 S=8EC9 P=A8BD POP H --ME- A=01 B=0F01 D=92C5 H=9280 S=8ECB P=A8BE POP B --ME- A=01 B=0F01 D=92C5 H=9280 S=8ECD P=A8BF INR C ----- A=01 B=0F02 D=92C5 H=9280 S=8ECD P=A8C0 DCR B *A8C1 #TW#10 ----I A=01 B=0E02 D=92C5 H=9280 S=8ECD P=A8C1 JNZ A89F ----I A=01 B=0E02 D=92C5 H=9280 S=8ECD P=A89F PUSH B ----I A=01 B=0E02 D=92C5 H=9280 S=8ECB P=A8A0 MOV E,M ----I A=01 B=0E02 D=9200 H=9280 S=8ECB P=A8A1 INX H ----I A=01 B=0E02 D=9200 H=9281 S=8ECB P=A8A2 MOV D,M ----I A=01 B=0E02 D=8E00 H=9281 S=8ECB P=A8A3 INX H ----I A=01 B=0E02 D=8E00 H=9282 S=8ECB P=A8A4 MOV A,E ----I A=00 B=0E02 D=8E00 H=9282 S=8ECB P=A8A5 ORA D --ME- A=8E B=0E02 D=8E00 H=9282 S=8ECB P=A8A6 JZ A8BE --ME- A=8E B=0E02 D=8E00 H=9282 S=8ECB P=A8A9 PUSH H *A8AA #TW#10 --ME- A=8E B=0E02 D=8E00 H=9282 S=8EC9 P=A8AA XCHG --ME- A=8E B=0E02 D=9282 H=8E00 S=8EC9 P=A8AB DCX H --ME- A=8E B=0E02 D=9282 H=8DFF S=8EC9 P=A8AC DCX H --ME- A=8E B=0E02 D=9282 H=8DFE S=8EC9 P=A8AD MOV A,M --ME- A=06 B=0E02 D=9282 H=8DFE S=8EC9 P=A8AE STA A976 --ME- A=06 B=0E02 D=9282 H=8DFE S=8EC9 P=A8B1 MOV A,C --ME- A=02 B=0E02 D=9282 H=8DFE S=8EC9 P=A8B2 STA A975 --ME- A=02 B=0E02 D=9282 H=8DFE S=8EC9 P=A8B5 DCX H --ME- A=02 B=0E02 D=9282 H=8DFD S=8EC9 P=A8B6 MOV D,M --ME- A=02B=0E02 D=6F82 H=8DFD S=8EC9 P=A8B7 DCX H *A8B8 #TW#10 --ME- A=02 B=0E02 D=6F82 H=8DFC S=8EC9 P=A8B8 MOV E,M --ME- A=02 B=0E02 D=6F7B H=8DFC S=8EC9 P=A8B9 XCHG --ME- A=02 B=0E02 D=8DFC H=6F7B S=8EC9 P=A8BA CALL 8FB1 (ipchl - 2) CP/M Error On @: Read/Only Disk =========================================================================================
...looks like it is hanging here, perhaps because the IDE module isn't loaded.
New build with IDE3 linked in, GENned for topmem=A9: ========================================================================================= A>pip a:=b:cpm3.sys A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8600 1E00 BDOS3 SPR 6700 1F00 25K TPA *01A9 #L8600 8600 JMP A27D (boot) 8603 JMP 866C (wboot) 8606 JMP 8772 (const) 8609 JMP 878D (conin) 860C JMP 86D5 (conout) 860F JMP 86E1 (list) 8612 JMP 86DB (auxout) 8615 JMP 8793 (auxin) 8618 JMP A2EB (home) 861B JMP A2BC (seldsk) 861E JMP A2EE (settrk) 8621 JMP A2F4 (setsec) 8624 JMP A2FA (setdma) 8627 JMP A311 (read) 862A JMP A327 (write) 862D JMP 870D (listst) 8630 JMP A306 (sectrn) 8633 JMP 8701 (conost) 8636 JMP 8778 (auxist) 8639 JMP 8707 (auxost) 863C JMP 86CD (devtbl) 863F JMP 8904 (devini) 8642 JMP 86D1 (drvtbl) 8645 JMP A348 (multio) 8648 JMP A34C (flush) 864B JMP 8A76 (move) 864E JMP 8894 (time) 8651 JMP 8820 (selmem) 8654 JMP A302 (setbnk) 8657 JMP 8A75 (xmove) 865A JMP 0000 (userf) 865D JMP 0000 (reserv1) 8660 JMP 0000 (reserv2) #P8663 #G8600 CP/M Plus v3.0hd 01 PASS 8663 -Z-EI A=00 B=0010 D=0000 H=8A9C S=86CD P=8663 CALL 8678 *8678 #TW#10 -Z-EI A=00 B=0010 D=0000 H=8A9C S=86CB P=8678 MVI A,C3 -Z-EI A=C3 B=0010 D=0000 H=8A9C S=86CB P=867A STA 0000 -Z-EI A=C3 B=0010 D=0000 H=8A9C S=86CB P=867D STA 0005 -Z-EI A=C3 B=0010 D=0000 H=8A9C S=86CB P=8680 LXI H,8603 -Z-EI A=C3 B=0010 D=0000 H=8603 S=86CB P=8683 SHLD 0001 -Z-EI A=C3 B=0010 D=0000 H=8603 S=86CB P=8686 LHLD 85FE -Z-EI A=C3 B=0010 D=0000 H=6706 S=86CB P=8689 SHLD 0006 -Z-EI A=C3 B=0010 D=0000 H=6706 S=86CB P=868C RET -Z-EI A=C3 B=0010 D=0000 H=6706 S=86CD P=8666 CALL 8860 (?ldccp) =========================================================================================
Hang
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8600 1E00 BDOS3 SPR 6700 1F00 25K TPA *01A9 #P8860 (?ldccp) #G8600 CP/M Plus v3.0hd 01 PASS 8860 -Z-EI A=C3 B=0010 D=0000 H=6706 S=86CB P=8860 XRA A (?ldccp) *8861 #TW#10 -Z-E- A=00 B=0010 D=0000 H=6706 S=86CB P=8861 STA 88D9 (CCP$FCB+15) -Z-E- A=00 B=0010 D=0000 H=6706 S=86CB P=8864 LXI H,0000 -Z-E- A=00 B=0010 D=0000 H=0000 S=86CB P=8867 SHLD 88EA (FCB$NR) -Z-E- A=00 B=0010 D=0000 H=0000 S=86CB P=886A LXI D,88CA (CCP$FCB) -Z-E- A=00 B=0010 D=88CA H=0000 S=86CB P=886D CALL 8895 (OPEN) =========================================================================================
Hang
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8600 1E00 BDOS3 SPR 6700 1F00 25K TPA *01A9 #P8895 #G8600 CP/M Plus v3.0hd 01 PASS 8895 -Z-E- A=00 B=0010 D=88CA H=0000 S=86C9 P=8895 MVI C,0F (OPEN) *8897 #TW#100 -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=8897 JMP 0005 (BDOS) -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=0005 JMP 6706 -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=6706 XCHG -Z-E- A=00 B=000F D=0000 H=88CA S=86C9 P=6707 SHLD 85DB -Z-E- A=00 B=000F D=0000 H=88CA S=86C9 P=670A XCHG -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=670B MOV A,C -Z-E- A=0F B=000F D=88CA H=0000 S=86C9 P=670C STA 85DF -Z-E- A=0F B=000F D=88CA H=0000 S=86C9 P=670F CPI 0E ----I A=0F B=000F D=88CA H=0000 S=86C9 P=6711 JC 6737 ----I A=0F B=000F D=88CA H=0000 S=86C9 P=6714 LXI H,0000 ----I A=0F B=000F D=88CA H=0000 S=86C9 P=6717 SHLD 83BD ----I A=0F B=000F D=88CA H=0000 S=86C9 P=671A LDA 85DA ----I A=00 B=000F D=88CA H=0000 S=86C9 P=671D STA 83C6 ----I A=00 B=000F D=88CA H=0000 S=86C9 P=6720 LDA 85E6 ----I A=01 B=000F D=88CA H=0000 S=86C9 P=6723 DCR A -Z-EI A=00 B=000F D=88CA H=0000 S=86C9 P=6724 JZ 6737 -Z-EI A=00 B=000F D=88CA H=0000 S=86C9 P=6737 MOV A,E -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=6738 STA 83C3 -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=673B LXI H,0000 -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=673E SHLD 6E7A -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=6741 SHLD 85DD -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=6744 DAD SP -Z-EI A=CA B=000F D=88CA H=86C9 S=86C9 P=6745 SHLD 69CB -Z-EI A=CA B=000F D=88CA H=86C9 S=86C9 P=6748 LXI SP,67EC -Z-EI A=CA B=000F D=88CA H=86C9 S=67EC P=674B LXI H,8364 -Z-EI A=CA B=000F D=88CA H=8364 S=67EC P=674E PUSH H -Z-EI A=CA B=000F D=88CA H=8364 S=67EA P=674F MOV A,C -Z-EI A=0F B=000F D=88CA H=8364 S=67EA P=6750 CPI 33 C-M-I A=0F B=000F D=88CA H=8364 S=67EA P=6752 JNC 675C C-M-I A=0F B=000F D=88CA H=8364 S=67EA P=6755 MOV C,E C-M-I A=0F B=00CA D=88CA H=8364 S=67EA P=6756 LXI H,67EC C-M-I A=0F B=00CA D=88CA H=67EC S=67EA P=6759 JMP 676E C-M-I A=0F B=00CA D=88CA H=67EC S=67EA P=676E MOV E,A C-M-I A=0F B=00CA D=880F H=67EC S=67EA P=676F MVI D,00 C-M-I A=0F B=00CA D=000F H=67EC S=67EA P=6771 DAD D --M-I A=0F B=00CA D=000F H=67FB S=67EA P=6772 DAD D --M-I A=0F B=00CA D=000F H=680A S=67EA P=6773 MOV E,M --M-I A=0F B=00CA D=0035 H=680A S=67EA P=6774 INX H --M-I A=0F B=00CA D=0035 H=680B S=67EA P=6775 MOV D,M --M-I A=0F B=00CA D=7F35 H=680B S=67EA P=6776 LHLD 85DB --M-I A=0F B=00CA D=7F35 H=88CA S=67EA P=6779 XCHG --M-I A=0F B=00CA D=88CA H=7F35 S=67EA P=677A PCHL --M-I A=0F B=00CA D=88CA H=7F35 S=67EA P=7F35 CALL 7212 --M-I A=00 B=00CA D=000E H=88D8 S=67EA P=7F38 CALL 7DA5 =========================================================================================
... we eventually get here and loop forever:
========================================================================================= CZ-E- A=24 B=8A00 D=8AA6 H=8B24 S=67B2 P=8B26 JMP 861B (jmp ?slDsk) CZ-E- A=24 B=8A00 D=8AA6 H=8B24 S=67B2 P=861B JMP A2BC (jmp seldsk) CZ-E- A=24 B=8A00 D=8AA6 H=8B24 S=67B2 P=A2BC MOV A,C (seldsk) CZ-E- A=00 B=8A00 D=8AA6 H=8B24 S=67B2 P=A2BD STA A36A (@ADRV) CZ-E- A=00 B=8A00 D=8AA6 H=8B24 S=67B2 P=A2C0 MOV L,C CZ-E- A=00 B=8A00 D=8AA6 H=8B00 S=67B2 P=A2C1 MVI H,00 CZ-E- A=00 B=8A00 D=8AA6 H=0000 S=67B2 P=A2C3 DAD H -Z-E- A=00 B=8A00 D=8AA6 H=0000 S=67B2 P=A2C4 LXI B,8A7C (@dtbl) -Z-E- A=00 B=8A7C D=8AA6 H=0000 S=67B2 P=A2C7 DAD B -Z-E- A=00 B=8A7C D=8AA6 H=8A7C S=67B2 P=A2C8 MOV A,M -Z-E- A=A6 B=8A7C D=8AA6 H=8A7C S=67B2 P=A2C9 INX H -Z-E- A=A6 B=8A7C D=8AA6 H=8A7D S=67B2 P=A2CA MOV H,M -Z-E- A=A6 B=8A7C D=8AA6 H=8A7D S=67B2 P=A2CB MOV L,A -Z-E- A=A6 B=8A7C D=8AA6 H=8AA6 S=67B2 P=A2CC ORA H --M-- A=AE B=8A7C D=8AA6 H=8AA6 S=67B2 P=A2CD RZ --M-- A=AE B=8A7C D=8AA6 H=8AA6 S=67B2 P=A2CE MOV A,E --M-- A=A6 B=8A7C D=8AA6 H=8AA6 S=67B2 P=A2CF ANI 01 -Z-E- A=00 B=8A7C D=8AA6 H=8AA6 S=67B2 P=A2D1 JNZ A2EA (not$first$select) -Z-E- A=00 B=8A7C D=8AA6 H=8AA6 S=67B2 P=A2D4 PUSH H -Z-E- A=00 B=8A7C D=8AA6 H=8AA6 S=67B0 P=A2D5 XCHG -Z-E- A=00 B=8A7C D=8AA6 H=8AA6 S=67B0 P=A2D6 LXI H,FFFE -Z-E- A=00 B=8A7C D=8AA6 H=FFFE S=67B0 P=A2D9 DAD D CZ-E- A=00 B=8A7C D=8AA6 H=8AA4 S=67B0 P=A2DA MOV A,M CZ-E- A=00 B=8A7C D=8AA6 H=8AA4 S=67B0 P=A2DB STA A36B (@RDRV) CZ-E- A=00 B=8A7C D=8AA6 H=8AA4 S=67B0 P=A2DE LXI H,FFFA CZ-E- A=00 B=8A7C D=8AA6 H=FFFA S=67B0 P=A2E1 DAD D CZ-E- A=00 B=8A7C D=8AA6 H=8AA0 S=67B0 P=A2E2 MOV A,M CZ-E- A=24 B=8A7C D=8AA6 H=8AA0 S=67B0 P=A2E3 INX H CZ-E- A=24 B=8A7C D=8AA6 H=8AA1 S=67B0 P=A2E4 MOV H,M CZ-E- A=24 B=8A7C D=8AA6 H=8BA1 S=67B0 P=A2E5 MOV L,A (HL=login) CZ-E- A=24 B=8A7C D=8AA6 H=8B24 S=67B0 P=A2E6 CALL 87B1 (ipchl) CZ-E- A=24 B=8A7C D=8AA6 H=8B24 S=67AE P=87B1 PCHL (login=>8B24) CZ-E- A=24 B=8A7C D=8AA6 H=8B24 S=67AE P=8B24 MVI C,00 ... CZ-E- A=24 B=8A00 D=8AA6 H=8B24 S=67AE P=8B26 JMP 861B CZ-E- A=24 B=8A00 D=8AA6 H=8B24 S=67AE P=861B JMP A2BC ... =========================================================================================
The login function should not call seldsk. 'Cause the seldsk flow in bioskrn3 calls login near the end of the function.
So if login calls seldsk, it creates an endless loop.
Removed the selDsk call in the login function and just made login immediately return. Getting closer.
This is what I now get:
========================================================================================= CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8600 1E00 BDOS3 SPR 6700 1F00 25K TPA CP/M Plus v3.0hd BIOS ERR ON A: NO CCP.COM FILE =========================================================================================
After removing the seldsk call in login:
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8600 1E00 BDOS3 SPR 6700 1F00 25K TPA *01A9 #P8895 #G8600 CP/M Plus v3.0hd 01 PASS 8895 -Z-E- A=00 B=0010 D=88CA H=0000 S=86C9 P=8895 MVI C,0F (OPEN) *8897 #TW#100 -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=8897 JMP 0005 (jmp BDOS) -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=0005 JMP 6706 -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=6706 XCHG -Z-E- A=00 B=000F D=0000 H=88CA S=86C9 P=6707 SHLD 85DB -Z-E- A=00 B=000F D=0000 H=88CA S=86C9 P=670A XCHG -Z-E- A=00 B=000F D=88CA H=0000 S=86C9 P=670B MOV A,C -Z-E- A=0F B=000F D=88CA H=0000 S=86C9 P=670C STA 85DF -Z-E- A=0F B=000F D=88CA H=0000 S=86C9 P=670F CPI 0E ----I A=0F B=000F D=88CA H=0000 S=86C9 P=6711 JC 6737 ----I A=0F B=000F D=88CA H=0000 S=86C9 P=6714 LXI H,0000 ----I A=0F B=000F D=88CA H=0000 S=86C9 P=6717 SHLD 83BD ----I A=0F B=000F D=88CA H=0000 S=86C9 P=671A LDA 85DA ----I A=00 B=000F D=88CA H=0000 S=86C9 P=671D STA 83C6 ----I A=00 B=000F D=88CA H=0000 S=86C9 P=6720 LDA 85E6 ----I A=01 B=000F D=88CA H=0000 S=86C9 P=6723 DCR A -Z-EI A=00 B=000F D=88CA H=0000 S=86C9 P=6724 JZ 6737 -Z-EI A=00 B=000F D=88CA H=0000 S=86C9 P=6737 MOV A,E -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=6738 STA 83C3 -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=673B LXI H,0000 -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=673E SHLD 6E7A -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=6741 SHLD 85DD -Z-EI A=CA B=000F D=88CA H=0000 S=86C9 P=6744 DAD SP -Z-EI A=CA B=000F D=88CA H=86C9 S=86C9 P=6745 SHLD 69CB -Z-EI A=CA B=000F D=88CA H=86C9 S=86C9 P=6748 LXI SP,67EC -Z-EI A=CA B=000F D=88CA H=86C9 S=67EC P=674B LXI H,8364 -Z-EI A=CA B=000F D=88CA H=8364 S=67EC P=674E PUSH H -Z-EI A=CA B=000F D=88CA H=8364 S=67EA P=674F MOV A,C -Z-EI A=0F B=000F D=88CA H=8364 S=67EA P=6750 CPI 33 C-M-I A=0F B=000F D=88CA H=8364 S=67EA P=6752 JNC 675C C-M-I A=0F B=000F D=88CA H=8364 S=67EA P=6755 MOV C,E C-M-I A=0F B=00CA D=88CA H=8364 S=67EA P=6756 LXI H,67EC C-M-I A=0F B=00CA D=88CA H=67EC S=67EA P=6759 JMP 676E C-M-I A=0F B=00CA D=88CA H=67EC S=67EA P=676E MOV E,A C-M-I A=0F B=00CA D=880F H=67EC S=67EA P=676F MVI D,00 C-M-I A=0F B=00CA D=000F H=67EC S=67EA P=6771 DAD D --M-I A=0F B=00CA D=000F H=67FB S=67EA P=6772 DAD D --M-I A=0F B=00CA D=000F H=680A S=67EA P=6773 MOV E,M --M-I A=0F B=00CA D=0035 H=680A S=67EA P=6774 INX H --M-I A=0F B=00CA D=0035 H=680B S=67EA P=6775 MOV D,M --M-I A=0F B=00CA D=7F35 H=680B S=67EA P=6776 LHLD 85DB --M-I A=0F B=00CA D=7F35 H=88CA S=67EA P=6779 XCHG --M-I A=0F B=00CA D=88CA H=7F35 S=67EA P=677A PCHL --M-I A=0F B=00CA D=88CA H=7F35 S=67EA P=7F35 CALL 7212 --M-I A=00 B=00CA D=000E H=88D8 S=67EA P=7F38 CALL 7DA5 -Z-E- A=00 B=0F00 D=83CD H=85F0 S=67EA P=7F3B CALL 7715 ---E- A=72 B=0F00 D=83CD H=88D5 S=67EA P=7F3E LDA 85E0 ---E- A=00 B=0F00 D=83CD H=88D5 S=67EA P=7F41 ORA A -Z-E- A=00 B=0F00 D=83CD H=88D5 S=67EA P=7F42 JZ 7F4E -Z-E- A=00 B=0F00 D=83CD H=88D5 S=67EA P=7F4E CALL 77A1 -Z-EI A=FF B=0002 D=88CA H=FFFF S=67EA P=7F51 CALL 7F7C -Z-EI A=00 B=0002 D=88CA H=85E2 S=67EA P=7F54 LXI H,83E1 -Z-EI A=00 B=0002 D=88CA H=83E1 S=67EA P=7F57 CMP M=00 -Z-EI A=00 B=0002 D=88CA H=83E1 S=67EA P=7F58 RZ -Z-EI A=00 B=0002 D=88CA H=83E1 S=67EC P=8364 LDA 85DD -Z-EI A=FF B=0002 D=88CA H=83E1 S=67EC P=8367 ORA A --ME- A=FF B=0002 D=88CA H=83E1 S=67EC P=8368 JZ 837B --ME- A=FF B=0002 D=88CA H=83E1 S=67EC P=836B LHLD 85DB --ME- A=FF B=0002 D=88CA H=88CA S=67EC P=836E LDA 83E3 --ME- A=01 B=0002 D=88CA H=88CA S=67EC P=8371 MOV M,A --ME- A=01 B=0002 D=88CA H=88CA S=67EC P=8372 LXI D,0008 --ME- A=01 B=0002 D=0008 H=88CA S=67EC P=8375 DAD D --ME- A=01 B=0002 D=0008 H=88D2 S=67EC P=8376 LDA 83D7 --ME- A=00 B=0002 D=0008 H=88D2 S=67EC P=8379 ORA M=20 ----- A=20 B=0002 D=0008 H=88D2 S=67EC P=837A MOV M,A ----- A=20 B=0002 D=0008 H=88D2 S=67EC P=837B LHLD 69CB ----- A=20 B=0002 D=0008 H=86C9 S=67EC P=837E SPHL ----- A=20 B=0002 D=0008 H=86C9 S=86C9 P=837F LHLD 6E7A ----- A=20 B=0002 D=0008 H=00FF S=86C9 P=8382 MOV A,L ----- A=FF B=0002 D=0008 H=00FF S=86C9 P=8383 MOV B,H ----- A=FF B=0002 D=0008 H=00FF S=86C9 P=8384 RET ----- A=FF B=0002 D=0008 H=00FF S=86CB P=8870 INR A <== test for zero after open() -Z-EI A=00 B=0002 D=0008 H=00FF S=86CB P=8871 CALL 87B2 BIOS ERR ON A: NO CCP.COM FILE -Z-E- A=00 B=0001 D=0008 H=88C9 S=86CB P=8879 CALL 8609 -Z-E- A=0D B=0001 D=8939 H=8A02 S=86CB P=887C ??= 18 -Z-E- A=0D B=0001 D=8939 H=8A02 S=86CB P=887D JPO 0011 -Z-E- A=0D B=0001 D=8939 H=8A02 S=86CB P=8880 LXI B,9ACD *8883 =========================================================================================
Rebuilt BIOS3 without IDE3 and DRV2 and DRV3 entries in drive table:
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A88B (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP A8F9 (home) 8E1B JMP A8CA (seldsk) 8E1E JMP A8FC (settrk) 8E21 JMP A902 (setsec) 8E24 JMP A908 (setdma) 8E27 JMP A91F (read) 8E2A JMP A935 (write) 8E2D JMP 8F0D (listst) 8E30 JMP A914 (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9104 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP A956 (multio) 8E48 JMP A95A (flush) 8E4B JMP 9282 (move) 8E4E JMP 9094 (time) 8E51 JMP 9020 (selmem) 8E54 JMP A910 (setbnk) 8E57 JMP 9281 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) #PA88B #G8E00 ... --ME- A=11 B=00FF D=9109 H=91D1 S=8ECD P=A899 CALL 9037 CP/M Plus v3.0hd (ret from init) -Z-E- A=00 B=00FF D=9109 H=9103 S=8ECD P=A89C LXI B,1000 -Z-E- A=00 B=1000 D=9109 H=9103 S=8ECD P=A89F LXI H,9288 (lxi h, @dtbl) -Z-E- A=00 B=1000 D=9109 H=9288 S=8ECD P=A8A2 PUSH B -Z-E- A=00 B=1000 D=9109 H=9288 S=8ECB P=A8A3 MOV E,M -Z-E- A=00 B=1000 D=91B2 H=9288 S=8ECB P=A8A4 INX H -Z-E- A=00 B=1000 D=91B2 H=9289 S=8ECB P=A8A5 MOV D,M -Z-E- A=00 B=1000 D=92B2 H=9289 S=8ECB P=A8A6 INX H -Z-E- A=00 B=1000 D=92B2 H=928A S=8ECB P=A8A7 MOV A,E (d0->928A) -Z-E- A=B2 B=1000 D=92B2 H=928A S=8ECB P=A8A8 ORA D --ME- A=B2 B=1000 D=92B2 H=928A S=8ECB P=A8A9 JZ A8C1 (d$init$next) --ME- A=B2 B=1000 D=92B2 H=928A S=8ECB P=A8AC PUSH H --ME- A=B2 B=1000 D=92B2 H=928A S=8EC9 P=A8AD XCHG --ME- A=B2 B=1000 D=928A H=92B2 S=8EC9 P=A8AE DCX H --ME- A=B2 B=1000 D=928A H=92B1 S=8EC9 P=A8AF DCX H --ME- A=B2 B=1000 D=928A H=92B0 S=8EC9 P=A8B0 MOV A,M --ME- A=00 B=1000 D=928A H=92B0 S=8EC9 P=A8B1 STA A979 (@RDRV) --ME- A=00 B=1000 D=928A H=92B0 S=8EC9 P=A8B4 MOV A,C --ME- A=00 B=1000 D=928A H=92B0 S=8EC9 P=A8B5 STA A978 (@ADRV) --ME- A=00 B=1000 D=928A H=92B0 S=8EC9 P=A8B8 DCX H --ME- A=00 B=1000 D=928A H=92AF S=8EC9 P=A8B9 MOV D,M --ME- A=00 B=1000 D=938A H=92AF S=8EC9 P=A8BA DCX H --ME- A=00 B=1000 D=938A H=92AE S=8EC9 P=A8BB MOV E,M --ME- A=00 B=1000 D=932F H=92AE S=8EC9 P=A8BC XCHG --ME- A=00 B=1000 D=92AE H=932F S=8EC9 P=A8BD CALL 8FB1 (ipchl) --ME- A=00 B=1000 D=92AE H=932F S=8EC7 P=8FB1 PCHL (call drive 0 init) --ME- A=00 B=1000 D=92AE H=932F S=8EC7 P=932F RET (...which is a null function) --ME- A=00 B=1000 D=92AE H=932F S=8EC9 P=A8C0 POP H (get d0->928A in HL) --ME- A=00 B=1000 D=92AE H=928A S=8ECB P=A8C1 POP B (recover drive# as counter) --ME- A=00 B=1000 D=92AE H=928A S=8ECD P=A8C2 INR C ----- A=00 B=1001 D=92AE H=928A S=8ECD P=A8C3 DCR B ---E- A=00 B=0F01 D=92AE H=928A S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ---E- A=00 B=0F01 D=92AE H=928A S=8ECD P=A8A2 PUSH B ---E- A=00 B=0F01 D=92AE H=928A S=8ECB P=A8A3 MOV E,M ---E- A=00 B=0F01 D=92D5 H=928A S=8ECB P=A8A4 INX H ---E- A=00 B=0F01 D=92D5 H=928B S=8ECB P=A8A5 MOV D,M ---E- A=00 B=0F01 D=92D5 H=928B S=8ECB P=A8A6 INX H ---E- A=00 B=0F01 D=92D5 H=928C S=8ECB P=A8A7 MOV A,E ---E- A=D5 B=0F01 D=92D5 H=928C S=8ECB P=A8A8 ORA D --ME- A=D7 B=0F01 D=92D5 H=928C S=8ECB P=A8A9 JZ A8C1 (d$init$next) --ME- A=D7 B=0F01 D=92D5 H=928C S=8ECB P=A8AC PUSH H --ME- A=D7 B=0F01 D=92D5 H=928C S=8EC9 P=A8AD XCHG --ME- A=D7 B=0F01 D=928C H=92D5 S=8EC9 P=A8AE DCX H --ME- A=D7 B=0F01 D=928C H=92D4 S=8EC9 P=A8AF DCX H --ME- A=D7 B=0F01 D=928C H=92D3 S=8EC9 P=A8B0 MOV A,M --ME- A=01 B=0F01 D=928C H=92D3 S=8EC9 P=A8B1 STA A979 (@RDRV) --ME- A=01 B=0F01 D=928C H=92D3 S=8EC9 P=A8B4 MOV A,C --ME- A=01 B=0F01 D=928C H=92D3 S=8EC9 P=A8B5 STA A978 (@ADRV) --ME- A=01 B=0F01 D=928C H=92D3 S=8EC9 P=A8B8 DCX H --ME- A=01 B=0F01 D=928C H=92D2 S=8EC9 P=A8B9 MOV D,M --ME- A=01 B=0F01 D=938C H=92D2 S=8EC9 P=A8BA DCX H --ME- A=01 B=0F01 D=938C H=92D1 S=8EC9 P=A8BB MOV E,M --ME- A=01 B=0F01 D=932F H=92D1 S=8EC9 P=A8BC XCHG --ME- A=01 B=0F01 D=92D1 H=932F S=8EC9 P=A8BD CALL 8FB1 (ipchl) --ME- A=01 B=0F01 D=92D1 H=932F S=8EC7 P=8FB1 PCHL (call drive 1 init) --ME- A=01 B=0F01 D=92D1 H=932F S=8EC7 P=932F RET (...which is a null function) --ME- A=01 B=0F01 D=92D1 H=932F S=8EC9 P=A8C0 POP H (get d0->928C in HL) --ME- A=01 B=0F01 D=92D1 H=928C S=8ECB P=A8C1 POP B (recover drive# as counter) --ME- A=01 B=0F01 D=92D1 H=928C S=8ECD P=A8C2 INR C ----- A=01 B=0F02 D=92D1 H=928C S=8ECD P=A8C3 DCR B ----I A=01 B=0E02 D=92D1 H=928C S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=01 B=0E02 D=92D1 H=928C S=8ECD P=A8A2 PUSH B ----I A=01 B=0E02 D=92D1 H=928C S=8ECB P=A8A3 MOV E,M ----I A=01 B=0E02 D=9200 H=928C S=8ECB P=A8A4 INX H ----I A=01 B=0E02 D=9200 H=928D S=8ECB P=A8A5 MOV D,M ----I A=01 B=0E02 D=0000 H=928D S=8ECB P=A8A6 INX H ----I A=01 B=0E02 D=0000 H=928E S=8ECB P=A8A7 MOV A,E ----I A=00 B=0E02 D=0000 H=928E S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0E02 D=0000 H=928E S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0E02 D=0000 H=928E S=8ECB P=A8C1 POP B -Z-E- A=00 B=0E02 D=0000 H=928E S=8ECD P=A8C2 INR C ---E- A=00 B=0E03 D=0000 H=928E S=8ECD P=A8C3 DCR B ----I A=00 B=0D03 D=0000 H=928E S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=00 B=0D03 D=0000 H=928E S=8ECD P=A8A2 PUSH B ----I A=00 B=0D03 D=0000 H=928E S=8ECB P=A8A3 MOV E,M ----I A=00 B=0D03 D=0000 H=928E S=8ECB P=A8A4 INX H ----I A=00 B=0D03 D=0000 H=928F S=8ECB P=A8A5 MOV D,M ----I A=00 B=0D03 D=0000 H=928F S=8ECB P=A8A6 INX H ----I A=00 B=0D03 D=0000 H=9290 S=8ECB P=A8A7 MOV A,E ----I A=00 B=0D03 D=0000 H=9290 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0D03 D=0000 H=9290 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0D03 D=0000 H=9290 S=8ECB P=A8C1 POP B -Z-E- A=00 B=0D03 D=0000 H=9290 S=8ECD P=A8C2 INR C ----- A=00 B=0D04 D=0000 H=9290 S=8ECD P=A8C3 DCR B ---EI A=00 B=0C04 D=0000 H=9290 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ---EI A=00 B=0C04 D=0000 H=9290 S=8ECD P=A8A2 PUSH B ---EI A=00 B=0C04 D=0000 H=9290 S=8ECB P=A8A3 MOV E,M ---EI A=00 B=0C04 D=0000 H=9290 S=8ECB P=A8A4 INX H ---EI A=00 B=0C04 D=0000 H=9291 S=8ECB P=A8A5 MOV D,M ---EI A=00 B=0C04 D=0000 H=9291 S=8ECB P=A8A6 INX H ---EI A=00 B=0C04 D=0000 H=9292 S=8ECB P=A8A7 MOV A,E ---EI A=00 B=0C04 D=0000 H=9292 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0C04 D=0000 H=9292 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0C04 D=0000 H=9292 S=8ECB P=A8C1 POP B -Z-E- A=00 B=0C04 D=0000 H=9292 S=8ECD P=A8C2 INR C ---E- A=00 B=0C05 D=0000 H=9292 S=8ECD P=A8C3 DCR B ----I A=00 B=0B05 D=0000 H=9292 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=00 B=0B05 D=0000 H=9292 S=8ECD P=A8A2 PUSH B ----I A=00 B=0B05 D=0000 H=9292 S=8ECB P=A8A3 MOV E,M ----I A=00 B=0B05 D=0000 H=9292 S=8ECB P=A8A4 INX H ----I A=00 B=0B05 D=0000 H=9293 S=8ECB P=A8A5 MOV D,M ----I A=00 B=0B05 D=0000 H=9293 S=8ECB P=A8A6 INX H ----I A=00 B=0B05 D=0000 H=9294 S=8ECB P=A8A7 MOV A,E ----I A=00 B=0B05 D=0000 H=9294 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0B05 D=0000 H=9294 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0B05 D=0000 H=9294 S=8ECB P=A8C1 POP B -Z-E- A=00 B=0B05 D=0000 H=9294 S=8ECD P=A8C2 INR C ---E- A=00 B=0B06 D=0000 H=9294 S=8ECD P=A8C3 DCR B ---EI A=00 B=0A06 D=0000 H=9294 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ---EI A=00 B=0A06 D=0000 H=9294 S=8ECD P=A8A2 PUSH B ---EI A=00 B=0A06 D=0000 H=9294 S=8ECB P=A8A3 MOV E,M ---EI A=00 B=0A06 D=0000 H=9294 S=8ECB P=A8A4 INX H ---EI A=00 B=0A06 D=0000 H=9295 S=8ECB P=A8A5 MOV D,M ---EI A=00 B=0A06 D=0000 H=9295 S=8ECB P=A8A6 INX H ---EI A=00 B=0A06 D=0000 H=9296 S=8ECB P=A8A7 MOV A,E ---EI A=00 B=0A06 D=0000 H=9296 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0A06 D=0000 H=9296 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0A06 D=0000 H=9296 S=8ECB P=A8C1 POP B -Z-E- A=00 B=0A06 D=0000 H=9296 S=8ECD P=A8C2 INR C ----- A=00 B=0A07 D=0000 H=9296 S=8ECD P=A8C3 DCR B ---EI A=00 B=0907 D=0000 H=9296 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ---EI A=00 B=0907 D=0000 H=9296 S=8ECD P=A8A2 PUSH B ---EI A=00 B=0907 D=0000 H=9296 S=8ECB P=A8A3 MOV E,M ---EI A=00 B=0907 D=0000 H=9296 S=8ECB P=A8A4 INX H ---EI A=00 B=0907 D=0000 H=9297 S=8ECB P=A8A5 MOV D,M ---EI A=00 B=0907 D=0000 H=9297 S=8ECB P=A8A6 INX H ---EI A=00 B=0907 D=0000 H=9298 S=8ECB P=A8A7 MOV A,E ---EI A=00 B=0907 D=0000 H=9298 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0907 D=0000 H=9298 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0907 D=0000 H=9298 S=8ECB P=A8C1 POP B -Z-E- A=00 B=0907 D=0000 H=9298 S=8ECD P=A8C2 INR C ----- A=00 B=0908 D=0000 H=9298 S=8ECD P=A8C3 DCR B ----I A=00 B=0808 D=0000 H=9298 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=00 B=0808 D=0000 H=9298 S=8ECD P=A8A2 PUSH B ----I A=00 B=0808 D=0000 H=9298 S=8ECB P=A8A3 MOV E,M ----I A=00 B=0808 D=0000 H=9298 S=8ECB P=A8A4 INX H ----I A=00 B=0808 D=0000 H=9299 S=8ECB P=A8A5 MOV D,M ----I A=00 B=0808 D=0000 H=9299 S=8ECB P=A8A6 INX H ----I A=00 B=0808 D=0000 H=929A S=8ECB P=A8A7 MOV A,E ----I A=00 B=0808 D=0000 H=929A S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0808 D=0000 H=929A S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0808 D=0000 H=929A S=8ECB P=A8C1 POP B -Z-E- A=00 B=0808 D=0000 H=929A S=8ECD P=A8C2 INR C ---E- A=00 B=0809 D=0000 H=929A S=8ECD P=A8C3 DCR B ----I A=00 B=0709 D=0000 H=929A S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=00 B=0709 D=0000 H=929A S=8ECD P=A8A2 PUSH B ----I A=00 B=0709 D=0000 H=929A S=8ECB P=A8A3 MOV E,M ----I A=00 B=0709 D=0000 H=929A S=8ECB P=A8A4 INX H ----I A=00 B=0709 D=0000 H=929B S=8ECB P=A8A5 MOV D,M ----I A=00 B=0709 D=0000 H=929B S=8ECB P=A8A6 INX H ----I A=00 B=0709 D=0000 H=929C S=8ECB P=A8A7 MOV A,E ----I A=00 B=0709 D=0000 H=929C S=8ECB P=A8A8 ORA D -Z-E- A=00 B=0709 D=0000 H=929C S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=0709 D=0000 H=929C S=8ECB P=A8C1 POP B -Z-E- A=00 B=0709 D=0000 H=929C S=8ECD P=A8C2 INR C ---E- A=00 B=070A D=0000 H=929C S=8ECD P=A8C3 DCR B ---EI A=00 B=060A D=0000 H=929C S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ---EI A=00 B=060A D=0000 H=929C S=8ECD P=A8A2 PUSH B ---EI A=00 B=060A D=0000 H=929C S=8ECB P=A8A3 MOV E,M ---EI A=00 B=060A D=0000 H=929C S=8ECB P=A8A4 INX H ---EI A=00 B=060A D=0000 H=929D S=8ECB P=A8A5 MOV D,M ---EI A=00 B=060A D=0000 H=929D S=8ECB P=A8A6 INX H ---EI A=00 B=060A D=0000 H=929E S=8ECB P=A8A7 MOV A,E ---EI A=00 B=060A D=0000 H=929E S=8ECB P=A8A8 ORA D -Z-E- A=00 B=060A D=0000 H=929E S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=060A D=0000 H=929E S=8ECB P=A8C1 POP B -Z-E- A=00 B=060A D=0000 H=929E S=8ECD P=A8C2 INR C ----- A=00 B=060B D=0000 H=929E S=8ECD P=A8C3 DCR B ---EI A=00 B=050B D=0000 H=929E S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ---EI A=00 B=050B D=0000 H=929E S=8ECD P=A8A2 PUSH B ---EI A=00 B=050B D=0000 H=929E S=8ECB P=A8A3 MOV E,M ---EI A=00 B=050B D=0000 H=929E S=8ECB P=A8A4 INX H ---EI A=00 B=050B D=0000 H=929F S=8ECB P=A8A5 MOV D,M ---EI A=00 B=050B D=0000 H=929F S=8ECB P=A8A6 INX H ---EI A=00 B=050B D=0000 H=92A0 S=8ECB P=A8A7 MOV A,E ---EI A=00 B=050B D=0000 H=92A0 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=050B D=0000 H=92A0 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=050B D=0000 H=92A0 S=8ECB P=A8C1 POP B -Z-E- A=00 B=050B D=0000 H=92A0 S=8ECD P=A8C2 INR C ---E- A=00 B=050C D=0000 H=92A0 S=8ECD P=A8C3 DCR B ----I A=00 B=040C D=0000 H=92A0 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=00 B=040C D=0000 H=92A0 S=8ECD P=A8A2 PUSH B ----I A=00 B=040C D=0000 H=92A0 S=8ECB P=A8A3 MOV E,M ----I A=00 B=040C D=0000 H=92A0 S=8ECB P=A8A4 INX H ----I A=00 B=040C D=0000 H=92A1 S=8ECB P=A8A5 MOV D,M ----I A=00 B=040C D=0000 H=92A1 S=8ECB P=A8A6 INX H ----I A=00 B=040C D=0000 H=92A2 S=8ECB P=A8A7 MOV A,E ----I A=00 B=040C D=0000 H=92A2 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=040C D=0000 H=92A2 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=040C D=0000 H=92A2 S=8ECB P=A8C1 POP B -Z-E- A=00 B=040C D=0000 H=92A2 S=8ECD P=A8C2 INR C ----- A=00 B=040D D=0000 H=92A2 S=8ECD P=A8C3 DCR B ---EI A=00 B=030D D=0000 H=92A2 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ---EI A=00 B=030D D=0000 H=92A2 S=8ECD P=A8A2 PUSH B ---EI A=00 B=030D D=0000 H=92A2 S=8ECB P=A8A3 MOV E,M ---EI A=00 B=030D D=0000 H=92A2 S=8ECB P=A8A4 INX H ---EI A=00 B=030D D=0000 H=92A3 S=8ECB P=A8A5 MOV D,M ---EI A=00 B=030D D=0000 H=92A3 S=8ECB P=A8A6 INX H ---EI A=00 B=030D D=0000 H=92A4 S=8ECB P=A8A7 MOV A,E ---EI A=00 B=030D D=0000 H=92A4 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=030D D=0000 H=92A4 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=030D D=0000 H=92A4 S=8ECB P=A8C1 POP B -Z-E- A=00 B=030D D=0000 H=92A4 S=8ECD P=A8C2 INR C ----- A=00 B=030E D=0000 H=92A4 S=8ECD P=A8C3 DCR B ----I A=00 B=020E D=0000 H=92A4 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=00 B=020E D=0000 H=92A4 S=8ECD P=A8A2 PUSH B ----I A=00 B=020E D=0000 H=92A4 S=8ECB P=A8A3 MOV E,M ----I A=00 B=020E D=0000 H=92A4 S=8ECB P=A8A4 INX H ----I A=00 B=020E D=0000 H=92A5 S=8ECB P=A8A5 MOV D,M ----I A=00 B=020E D=0000 H=92A5 S=8ECB P=A8A6 INX H ----I A=00 B=020E D=0000 H=92A6 S=8ECB P=A8A7 MOV A,E ----I A=00 B=020E D=0000 H=92A6 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=020E D=0000 H=92A6 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=020E D=0000 H=92A6 S=8ECB P=A8C1 POP B -Z-E- A=00 B=020E D=0000 H=92A6 S=8ECD P=A8C2 INR C ---E- A=00 B=020F D=0000 H=92A6 S=8ECD P=A8C3 DCR B ----I A=00 B=010F D=0000 H=92A6 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) ----I A=00 B=010F D=0000 H=92A6 S=8ECD P=A8A2 PUSH B ----I A=00 B=010F D=0000 H=92A6 S=8ECB P=A8A3 MOV E,M ----I A=00 B=010F D=0000 H=92A6 S=8ECB P=A8A4 INX H ----I A=00 B=010F D=0000 H=92A7 S=8ECB P=A8A5 MOV D,M ----I A=00 B=010F D=0000 H=92A7 S=8ECB P=A8A6 INX H ----I A=00 B=010F D=0000 H=92A8 S=8ECB P=A8A7 MOV A,E ----I A=00 B=010F D=0000 H=92A8 S=8ECB P=A8A8 ORA D -Z-E- A=00 B=010F D=0000 H=92A8 S=8ECB P=A8A9 JZ A8C1 (d$init$next) -Z-E- A=00 B=010F D=0000 H=92A8 S=8ECB P=A8C1 POP B -Z-E- A=00 B=010F D=0000 H=92A8 S=8ECD P=A8C2 INR C ----I A=00 B=0110 D=0000 H=92A8 S=8ECD P=A8C3 DCR B -Z-EI A=00 B=0010 D=0000 H=92A8 S=8ECD P=A8C4 JNZ A8A2 (d$init$loop) -Z-EI A=00 B=0010 D=0000 H=92A8 S=8ECD P=A8C7 JMP 8E63 (jmp boot$1) -Z-EI A=00 B=0010 D=0000 H=92A8 S=8ECD P=8E63 CALL 8E78 (call set$jumps) -Z-EI A=00 B=0010 D=0000 H=92A8 S=8ECB P=8E78 MVI A,C3 (jmp instruction = C3) -Z-EI A=C3 B=0010 D=0000 H=92A8 S=8ECB P=8E7A STA 0000 (store jmp in 0000) -Z-EI A=C3 B=0010 D=0000 H=92A8 S=8ECB P=8E7D STA 0005 (...and in 0005 for BDOS) -Z-EI A=C3 B=0010 D=0000 H=92A8 S=8ECB P=8E80 LXI H,8E03 (?wboot) -Z-EI A=C3 B=0010 D=0000 H=8E03 S=8ECB P=8E83 SHLD 0001 -Z-EI A=C3 B=0010 D=0000 H=8E03 S=8ECB P=8E86 LHLD 8DFE (@MXTPA) -Z-EI A=C3 B=0010 D=0000 H=6F06 S=8ECB P=8E89 SHLD 0006 (put @MXTPA after the BDOS jump instruction) -Z-EI A=C3 B=0010 D=0000 H=6F06 S=8ECB P=8E8C RET (ret from set$jumps) -Z-EI A=C3 B=0010 D=0000 H=6F06 S=8ECD P=8E66 CALL 9060 (call ?ldccp) -Z-EI A=C3 B=0010 D=0000 H=6F06 S=8ECB P=9060 XRA A (zero accumulator) -Z-E- A=00 B=0010 D=0000 H=6F06 S=8ECB P=9061 STA 90D9 (store in CCP$FCB+15 90D9) -Z-E- A=00 B=0010 D=0000 H=6F06 S=8ECB P=9064 LXI H,0000 (zero HL) -Z-E- A=00 B=0010 D=0000 H=0000 S=8ECB P=9067 SHLD 90EA (store in FCB$NR 90EA) -Z-E- A=00 B=0010 D=0000 H=0000 S=8ECB P=906A LXI D,90CA (put CCP$FCB in DE 90CA) -Z-E- A=00 B=0010 D=90CA H=0000 S=8ECB P=906D CALL 9095 (open) ... (just before calling read function in FDC3) ----I A=01 B=9601 D=0000 H=96A5 S=6FD4 P=7764 CALL 8E27 ----I A=01 B=9601 D=0000 H=96A5 S=6FD2 P=8E27 JMP A91F ... =========================================================================================
Here is a partial run with passpoint at the read function call:
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #PA91F #G8E00 CP/M Plus v3.0hd 01 PASS A91F ----I A=01 B=9601 D=0000 H=96A5 S=6FD2 P=A91F LHLD A978 (@ADRV) ----I A=01 B=9601 D=0000 H=0000 S=6FD2 P=A922 MVI H,00 ----I A=01 B=9601 D=0000 H=0000 S=6FD2 P=A924 DAD H ----I A=01 B=9601 D=0000 H=0000 S=6FD2 P=A925 LXI D,9288 (@DTBL) ----I A=01 B=9601 D=9288 H=0000 S=6FD2 P=A928 DAD D ----I A=01 B=9601 D=9288 H=9288 S=6FD2 P=A929 MOV A,M ----I A=B2 B=9601 D=9288 H=9288 S=6FD2 P=A92A INX H ----I A=B2 B=9601 D=9288 H=9289 S=6FD2 P=A92B MOV H,M ----I A=B2 B=9601 D=9288 H=9289 S=6FD2 P=A92C MOV L,A ----I A=B2 B=9601 D=9288 H=92B2 S=6FD2 P=A92D PUSH H ----I A=B2 B=9601 D=9288 H=92B2 S=6FD0 P=A92E LXI D,FFF8 ----I A=B2 B=9601 D=FFF8 H=92B2 S=6FD0 P=A931 DAD D C---I A=B2 B=9601 D=FFF8 H=92AA S=6FD0 P=A932 JMP A948 (rw$common) C---I A=B2 B=9601 D=FFF8 H=92AA S=6FD0 P=A948 MOV A,M C---I A=31 B=9601 D=FFF8 H=92AA S=6FD0 P=A949 INX H C---I A=31 B=9601 D=FFF8 H=92AB S=6FD0 P=A94A MOV H,M C---I A=31 B=9601 D=FFF8 H=93AB S=6FD0 P=A94B MOV L,A C---I A=31 B=9601 D=FFF8 H=9331 S=6FD0 P=A94C POP D (HL<=address of read driver code 9331) C---I A=31 B=9601 D=92B2 H=9331 S=6FD2 P=A94D DCX D C---I A=31 B=9601 D=92B1 H=9331 S=6FD2 P=A94E DCX D C---I A=31 B=9601 D=92B0 H=9331 S=6FD2 P=A94F LDAX D C---I A=00 B=9601 D=92B0 H=9331 S=6FD2 P=A950 STA A979 C---I A=00 B=9601 D=92B0 H=9331 S=6FD2 P=A953 INX D C---I A=00 B=9601 D=92B1 H=9331 S=6FD2 P=A954 INX D C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=A955 PCHL (jump to fdRead within FDC3) C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 (call ckFlush) C---I A=00 B=9601 D=92B2 H=9331 S=6FD0 P=9446 LDA 969F (bfDirty) C---I A=00 B=9601 D=92B2 H=9331 S=6FD0 P=9449 ORA A -Z-E- A=00 B=9601 D=92B2 H=9331 S=6FD0 P=944A RZ (done with ckFlush) -Z-E- A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9334 EI -Z-E- A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9335 CALL 93DF (readTrk) -Z-E- A=00 B=9601 D=92B2 H=9331 S=6FD0 P=93DF LHLD 96A0 (bfDrive) -Z-E- A=00 B=9601 D=92B2 H=FFFF S=6FD0 P=93E2 LDA A979 (@RDRV) -Z-E- A=00 B=9601 D=92B2 H=FFFF S=6FD0 P=93E5 CMP L C---- A=00 B=9601 D=92B2 H=FFFF S=6FD0 P=93E6 JNZ 93EE (rtNew) C---- A=00 B=9601 D=92B2 H=FFFF S=6FD0 P=93EE MVI A,FF C---- A=FF B=9601 D=92B2 H=FFFF S=6FD0 P=93F0 STA 96A0 (bfDrive) C---- A=FF B=9601 D=92B2 H=FFFF S=6FD0 P=93F3 CALL 94D0 (dSelDrv) C---- A=FF B=9601 D=92B2 H=FFFF S=6FCE P=94D0 LXI H,9699 (curDrv) C---- A=FF B=9601 D=92B2 H=9699 S=6FCE P=94D3 MOV E,M C---- A=FF B=9601 D=9200 H=9699 S=6FCE P=94D4 LDA A979 (@RDRV) C---- A=00 B=9601 D=9200 H=9699 S=6FCE P=94D7 MOV C,A C---- A=00 B=9600 D=9200 H=9699 S=6FCE P=94D8 CMP E -Z-EI A=00 B=9600 D=9200 H=9699 S=6FCE P=94D9 JNZ 94E6 (newDrv) -Z-EI A=00 B=9600 D=9200 H=9699 S=6FCE P=94DC IN 08 (in DRVSTAT) -Z-EI A=C5 B=9600 D=9200 H=9699 S=6FCE P=94DE ANI 08 -Z-EI A=00 B=9600 D=9200 H=9699 S=6FCE P=94E0 JZ 951B (dSelExt - selected drive == current drive) -Z-EI A=00 B=9600 D=9200 H=9699 S=6FCE P=951B MVI A,04 (load head) -Z-EI A=04 B=9600 D=9200 H=9699 S=6FCE P=951D OUT 09 (out DRVCMD) -Z-EI A=04 B=9600 D=9200 H=9699 S=6FCE P=951F RET (from dSelDrv, back to rtNew) -Z-EI A=04 B=9600 D=9200 H=9699 S=6FD0 P=93F6 RNZ -Z-EI A=04 B=9600 D=9200 H=9699 S=6FD0 P=93F7 MVI A,02 (init restore/seek attempt counter) -Z-EI A=02 B=9600 D=9200 H=9699 S=6FD0 P=93F9 STA 96A4 (skRetry) -Z-EI A=02 B=9600 D=9200 H=9699 S=6FD0 P=93FC CALL 9520 (dSeek) -Z-EI A=02 B=9600 D=9200 H=9699 S=6FCE P=9520 DI -Z-EI A=02 B=9600 D=9200 H=9699 S=6FCE P=9521 LDA 969A (curTrk) -Z-EI A=FF B=9600 D=9200 H=9699 S=6FCE P=9524 CPI FF (UNDEF) -Z-EI A=FF B=9600 D=9200 H=9699 S=6FCE P=9526 JNZ 952D (dTrkVld - not valid 'cause 1st access) -Z-EI A=FF B=9600 D=9200 H=9699 S=6FCE P=9529 CALL 9545 (dRestor) -Z-EI A=FF B=9600 D=9200 H=9699 S=6FCC P=9545 XRA A (set A=0) -Z-E- A=00 B=9600 D=9200 H=9699 S=6FCC P=9546 STA 969A (store in curTrk) -Z-E- A=00 B=9600 D=9200 H=9699 S=6FCC P=9549 IN 08 (in DRVSTAT) -Z-E- A=C5 B=9600 D=9200 H=9699 S=6FCC P=954B ANI 40 (ani sTRACK0) ----- A=40 B=9600 D=9200 H=9699 S=6FCC P=954D RZ (if head at track 0, return) ----- A=40 B=9600 D=9200 H=9699 S=6FCC P=954E MVI C,03 (step in 3 tracks) ----- A=40 B=9603 D=9200 H=9699 S=6FCC P=9550 MVI B,01 (mvi b,cSTEPI) ----- A=40 B=0103 D=9200 H=9699 S=6FCC P=9552 CALL 9570 (call dStep to move 3 steps in) ----- A=40 B=0103 D=9200 H=9699 S=6FCA P=9570 IN 08 (in DRVSTAT) ----- A=C5 B=0103 D=9200 H=9699 S=6FCA P=9572 ANI 02 (ani sMOVEOK) -Z-E- A=00 B=0103 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 (jnz dStep - wait 'til sMOVEOK) -Z-E- A=00 B=0103 D=9200 H=9699 S=6FCA P=9577 IN 08 (no wait needed, so IN DRVSTAT) -Z-E- A=C5 B=0103 D=9200 H=9699 S=6FCA P=9579 ANI 40 (ani sTRACK0) ----- A=40 B=0103 D=9200 H=9699 S=6FCA P=957B JNZ 9584 (jnz dStep1) ----- A=40 B=0103 D=9200 H=9699 S=6FCA P=9584 MOV A,B (dStep1, so step in) ----- A=01 B=0103 D=9200 H=9699 S=6FCA P=9585 OUT 09 (out DRVCMD) ----- A=01 B=0103 D=9200 H=9699 S=6FCA P=9587 DCR C ----I A=01 B=0102 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 (jnz dStep) ----I A=01 B=0102 D=9200 H=9699 S=6FCA P=9570 IN 08 (in DRVSTAT) ----I A=C5 B=0102 D=9200 H=9699 S=6FCA P=9572 ANI 02 (ani sMOVEOK) -Z-E- A=00 B=0102 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 (jnz dStep - wait 'til sMOVEOK) -Z-E- A=00 B=0102 D=9200 H=9699 S=6FCA P=9577 IN 08 (no wait needed, so IN DRVSTAT) -Z-E- A=C5 B=0102 D=9200 H=9699 S=6FCA P=9579 ANI 40 (ani sTRACK0) ----- A=40 B=0102 D=9200 H=9699 S=6FCA P=957B JNZ 9584 (jnz dStep1) ----- A=40 B=0102 D=9200 H=9699 S=6FCA P=9584 MOV A,B (dStep1, so step in) ----- A=01 B=0102 D=9200 H=9699 S=6FCA P=9585 OUT 09 (out DRVCMD) ----- A=01 B=0102 D=9200 H=9699 S=6FCA P=9587 DCR C ----I A=01 B=0101 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 (jnz dStep) ----I A=01 B=0101 D=9200 H=9699 S=6FCA P=9570 IN 08 (in DRVSTAT) ----I A=C5 B=0101 D=9200 H=9699 S=6FCA P=9572 ANI 02 (ani sMOVEOK) -Z-E- A=00 B=0101 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 (jnz dStep - wait 'til sMOVEOK) -Z-E- A=00 B=0101 D=9200 H=9699 S=6FCA P=9577 IN 08 (no wait needed, so IN DRVSTAT) -Z-E- A=C5 B=0101 D=9200 H=9699 S=6FCA P=9579 ANI 40 (ani sTRACK0) ----- A=40 B=0101 D=9200 H=9699 S=6FCA P=957B JNZ 9584 (jnz dStep1) ----- A=40 B=0101 D=9200 H=9699 S=6FCA P=9584 MOV A,B (dStep1, so step in) ----- A=01 B=0101 D=9200 H=9699 S=6FCA P=9585 OUT 09 (out DRVCMD) ----- A=01 B=0101 D=9200 H=9699 S=6FCA P=9587 DCR C -Z-EI A=01 B=0100 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 (jnz dStep) -Z-EI A=01 B=0100 D=9200 H=9699 S=6FCA P=958B INR C (make C non-zero) ----- A=01 B=0101 D=9200 H=9699 S=6FCA P=958C RET (...and RET to dRestor) ----- A=01 B=0101 D=9200 H=9699 S=6FCC P=9555 MVI A,14 (a=20 decimal, for 20ms delay) ----- A=14 B=0101 D=9200 H=9699 S=6FCC P=9557 CALL 95A6 (call delayMs) ----- A=14 B=0101 D=9200 H=9699 S=6FCA P=95A6 MVI B,69 (105 iterations) ----- A=14 B=6901 D=9200 H=9699 S=6FCA P=95A8 NOP (takes 4 cycles) ----- A=14 B=6901 D=9200 H=9699 S=6FCA P=95A9 DCR B (takes 5 cycles) ----I A=14 B=6801 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 (takes 10 cycles, back around 'til B=0) ----I A=14 B=6801 D=9200 H=9699 S=6FCA P=95A8 NOP ----I A=14 B=6801 D=9200 H=9699 S=6FCA P=95A9 DCR B ----I A=14 B=6701 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 ... ----I A=14 B=0201 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 ----I A=14 B=0201 D=9200 H=9699 S=6FCA P=95A8 NOP ----I A=14 B=0201 D=9200 H=9699 S=6FCA P=95A9 DCR B ----I A=14 B=0101 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 ----I A=14 B=0101 D=9200 H=9699 S=6FCA P=95A8 NOP ----I A=14 B=0101 D=9200 H=9699 S=6FCA P=95A9 DCR B -Z-EI A=14 B=0001 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 -Z-EI A=14 B=0001 D=9200 H=9699 S=6FCA P=95AD DCR A (decrement the millisecond counter A) ----I A=13 B=0001 D=9200 H=9699 S=6FCA P=95AE JNZ 95A6 (...and keep it up) ----I A=13 B=0001 D=9200 H=9699 S=6FCA P=95A6 MVI B,69 ----I A=13 B=6901 D=9200 H=9699 S=6FCA P=95A8 NOP ----I A=13 B=6901 D=9200 H=9699 S=6FCA P=95A9 DCR B ----I A=13 B=6801 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 ----I A=13 B=6801 D=9200 H=9699 S=6FCA P=95A8 NOP ----I A=13 B=6801 D=9200 H=9699 S=6FCA P=95A9 DCR B ----I A=13 B=6701 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 ... ----I A=01 B=0201 D=9200 H=9699 S=6FCA P=95A8 NOP ----I A=01 B=0201 D=9200 H=9699 S=6FCA P=95A9 DCR B ----I A=01 B=0101 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 ----I A=01 B=0101 D=9200 H=9699 S=6FCA P=95A8 NOP ----I A=01 B=0101 D=9200 H=9699 S=6FCA P=95A9 DCR B -Z-EI A=01 B=0001 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 -Z-EI A=01 B=0001 D=9200 H=9699 S=6FCA P=95AD DCR A -Z-EI A=00 B=0001 D=9200 H=9699 S=6FCA P=95AE JNZ 95A6 -Z-EI A=00 B=0001 D=9200 H=9699 S=6FCA P=95B1 RET =========================================================================================
The instruction after the RET is at 955A. So put a passpoint there.
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P955A #G8E00 CP/M Plus v3.0hd 01 PASS 955A -Z-EI A=00 B=0001 D=9200 H=9699 S=6FCC P=955A MVI C,57 (NUMTRK+10) -Z-EI A=00 B=0057 D=9200 H=9699 S=6FCC P=955C MVI B,02 (STEPO) -Z-EI A=00 B=0257 D=9200 H=9699 S=6FCC P=955E CALL 9570 (dStep) -Z-EI A=00 B=0257 D=9200 H=9699 S=6FCA P=9570 IN 08 -Z-EI A=C5 B=0257 D=9200 H=9699 S=6FCA P=9572 ANI 02 -Z-E- A=00 B=0257 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 -Z-E- A=00 B=0257 D=9200 H=9699 S=6FCA P=9577 IN 08 -Z-E- A=C5 B=0257 D=9200 H=9699 S=6FCA P=9579 ANI 40 ----- A=40 B=0257 D=9200 H=9699 S=6FCA P=957B JNZ 9584 ----- A=40 B=0257 D=9200 H=9699 S=6FCA P=9584 MOV A,B ----- A=02 B=0257 D=9200 H=9699 S=6FCA P=9585 OUT 09 ----- A=02 B=0257 D=9200 H=9699 S=6FCA P=9587 DCR C ---EI A=02 B=0256 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 ---EI A=02 B=0256 D=9200 H=9699 S=6FCA P=9570 IN 08 ---EI A=C5 B=0256 D=9200 H=9699 S=6FCA P=9572 ANI 02 -Z-E- A=00 B=0256 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 -Z-E- A=00 B=0256 D=9200 H=9699 S=6FCA P=9577 IN 08 -Z-E- A=C5 B=0256 D=9200 H=9699 S=6FCA P=9579 ANI 40 ----- A=40 B=0256 D=9200 H=9699 S=6FCA P=957B JNZ 9584 ----- A=40 B=0256 D=9200 H=9699 S=6FCA P=9584 MOV A,B ----- A=02 B=0256 D=9200 H=9699 S=6FCA P=9585 OUT 09 ----- A=02 B=0256 D=9200 H=9699 S=6FCA P=9587 DCR C ---EI A=02 B=0255 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 ---EI A=02 B=0255 D=9200 H=9699 S=6FCA P=9570 IN 08 ---EI A=C5 B=0255 D=9200 H=9699 S=6FCA P=9572 ANI 02 -Z-E- A=00 B=0255 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 -Z-E- A=00 B=0255 D=9200 H=9699 S=6FCA P=9577 IN 08 -Z-E- A=C5 B=0255 D=9200 H=9699 S=6FCA P=9579 ANI 40 ----- A=40 B=0255 D=9200 H=9699 S=6FCA P=957B JNZ 9584 ----- A=40 B=0255 D=9200 H=9699 S=6FCA P=9584 MOV A,B ----- A=02 B=0255 D=9200 H=9699 S=6FCA P=9585 OUT 09 ----- A=02 B=0255 D=9200 H=9699 S=6FCA P=9587 DCR C ----I A=02 B=0254 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 ----I A=02 B=0254 D=9200 H=9699 S=6FCA P=9570 IN 08 ----I A=C5 B=0254 D=9200 H=9699 S=6FCA P=9572 ANI 02 -Z-E- A=00 B=0254 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 -Z-E- A=00 B=0254 D=9200 H=9699 S=6FCA P=9577 IN 08 -Z-E- A=C5 B=0254 D=9200 H=9699 S=6FCA P=9579 ANI 40 ----- A=40 B=0254 D=9200 H=9699 S=6FCA P=957B JNZ 9584 ----- A=40 B=0254 D=9200 H=9699 S=6FCA P=9584 MOV A,B ----- A=02 B=0254 D=9200 H=9699 S=6FCA P=9585 OUT 09 ----- A=02 B=0254 D=9200 H=9699 S=6FCA P=9587 DCR C ---EI A=02 B=0253 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 ---EI A=02 B=0253 D=9200 H=9699 S=6FCA P=9570 IN 08 ---EI A=C5 B=0253 D=9200 H=9699 S=6FCA P=9572 ANI 02 -Z-E- A=00 B=0253 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 -Z-E- A=00 B=0253 D=9200 H=9699 S=6FCA P=9577 IN 08 -Z-E- A=C5 B=0253 D=9200 H=9699 S=6FCA P=9579 ANI 40 ----- A=40 B=0253 D=9200 H=9699 S=6FCA P=957B JNZ 9584 ----- A=40 B=0253 D=9200 H=9699 S=6FCA P=9584 MOV A,B ----- A=02 B=0253 D=9200 H=9699 S=6FCA P=9585 OUT 09 ----- A=02 B=0253 D=9200 H=9699 S=6FCA P=9587 DCR C ----I A=02 B=0252 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 ----I A=02 B=0252 D=9200 H=9699 S=6FCA P=9570 IN 08 ----I A=C5 B=0252 D=9200 H=9699 S=6FCA P=9572 ANI 02 -Z-E- A=00 B=0252 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 -Z-E- A=00 B=0252 D=9200 H=9699 S=6FCA P=9577 IN 08 -Z-E- A=C5 B=0252 D=9200 H=9699 S=6FCA P=9579 ANI 40 ----- A=40 B=0252 D=9200 H=9699 S=6FCA P=957B JNZ 9584 ----- A=40 B=0252 D=9200 H=9699 S=6FCA P=9584 MOV A,B ----- A=02 B=0252 D=9200 H=9699 S=6FCA P=9585 OUT 09 ----- A=02 B=0252 D=9200 H=9699 S=6FCA P=9587 DCR C ----I A=02 B=0251 D=9200 H=9699 S=6FCA P=9588 JNZ 9570 ----I A=02 B=0251 D=9200 H=9699 S=6FCA P=9570 IN 08 ----I A=C5 B=0251 D=9200 H=9699 S=6FCA P=9572 ANI 02 -Z-E- A=00 B=0251 D=9200 H=9699 S=6FCA P=9574 JNZ 9570 -Z-E- A=00 B=0251 D=9200 H=9699 S=6FCA P=9577 IN 08 -Z-E- A=C5 B=0251 D=9200 H=9699 S=6FCA P=9579 ANI 40 ----- A=40 B=0251 D=9200 H=9699 S=6FCA P=957B JNZ 9584 ... ---EI A=08 B=1222 D=9200 H=9699 S=6FCA P=95A8 NOP ---EI A=08 B=1222 D=9200 H=9699 S=6FCA P=95A9 DCR B ---EI A=08 B=1122 D=9200 H=9699 S=6FCA P=95AA JNZ 95A8 ...from B=69 hex down to 0 ... -Z-EI A=00 B=0022 D=9200 H=9699 S=6FCA P=95B1 RET -Z-EI A=00 B=0022 D=9200 H=9699 S=6FCC P=9569 RET -Z-EI A=00 B=0022 D=9200 H=9699 S=6FCE P=952C RNZ -Z-EI A=00 B=0022 D=9200 H=9699 S=6FCE P=952D LXI H,A97A (@TRK) <==dTrkVld: -Z-EI A=00 B=0022 D=9200 H=A97A S=6FCE P=9530 SUB M=02 C-M-- A=FE B=0022 D=9200 H=A97A S=6FCE P=9531 RZ C-M-- A=FE B=0022 D=9200 H=A97A S=6FCE P=9532 MVI B,02 (mvi b,cSTEPO) C-M-- A=FE B=0222 D=9200 H=A97A S=6FCE P=9534 JNC 953B (dDoSeek if NOT carry) C-M-- A=FE B=0222 D=9200 H=A97A S=6FCE P=9537 MVI B,01 (cSTEPI) C-M-- A=FE B=0122 D=9200 H=A97A S=6FCE P=9539 CMA C-M-- A=01 B=0122 D=9200 H=A97A S=6FCE P=953A INR A C---- A=02 B=0122 D=9200 H=A97A S=6FCE P=953B MOV C,A C---- A=02 B=0102 D=9200 H=A97A S=6FCE P=953C MOV A,M C---- A=02 B=0102 D=9200 H=A97A S=6FCE P=953D STA 969A C---- A=02 B=0102 D=9200 H=A97A S=6FCE P=9540 CALL 9570 C---- A=02 B=0102 D=9200 H=A97A S=6FCC P=9570 IN 08 C---- A=85 B=0102 D=9200 H=A97A S=6FCC P=9572 ANI 02 -Z-E- A=00 B=0102 D=9200 H=A97A S=6FCC P=9574 JNZ 9570 <== dStep, back here -Z-E- A=00 B=0102 D=9200 H=A97A S=6FCC P=9577 IN 08 ... =========================================================================================
At any point in the "read" function or its subroutines,
we can break out by pressing ctrl-C.
But if we do, then
we get the message, "BIOS ERR ON A: NO CCP.COM FILE."
Then we're hung and done.
fdRead (9331) readTrk (93DF) Breakpoint at fdRead: ====================================================================== A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #G8E00,9331 CP/M Plus v3.0hd *9331 #TW C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 (ckFlush) -Z-E- A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9334 EI -Z-E- A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9335 CALL 93DF (readTrk) -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD2 P=9338 EI -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD2 P=9339 JNZ 933F (exitDio) -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD2 P=933C CALL 9352 (movRead) -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD0 P=9352 CALL 93CF (altSkew) -Z-EI A=00 B=0082 D=A100 H=0200 S=6FCE P=93CF LDA A97A (@TRK) -Z-EI A=02 B=0082 D=A100 H=0200 S=6FCE P=93D2 CPI 06 (06=DATATRK) C-ME- A=02 B=0082 D=A100 H=0200 S=6FCE P=93D4 LDA A97C (@SECT) C-ME- A=01 B=0082 D=A100 H=0200 S=6FCE P=93D7 RC (correct sector, return to movRead) C-ME- A=01 B=0082 D=A100 H=0200 S=6FD0 P=9355 CALL 9599 (dSecAdr) C-ME- A=01 B=0082 D=A100 H=0200 S=6FCE P=9599 LXI H,9657 (secAddr) C-ME- A=01 B=0082 D=A100 H=9657 S=6FCE P=959C MVI B,00 C-ME- A=01 B=0082 D=A100 H=9657 S=6FCE P=959E RLC --ME- A=02 B=0082 D=A100 H=9657 S=6FCE P=959F MOV C,A --ME- A=02 B=0002 D=A100 H=9657 S=6FCE P=95A0 DAD B --ME- A=02 B=0002 D=A100 H=9659 S=6FCE P=95A1 MOV A,M --ME- A=F4 B=0002 D=A100 H=9659 S=6FCE P=95A2 INX H --ME- A=F4 B=0002 D=A100 H=965A S=6FCE P=95A3 MOV H,M --ME- A=F4 B=0002 D=A100 H=975A S=6FCE P=95A4 MOV L,A --ME- A=F4 B=0002 D=A100 H=97F4 S=6FCE P=95A5 RET (ret to movRead with HL=sectorBuffer 97F4) --ME- A=F4 B=0002 D=A100 H=97F4 S=6FD0 P=9358 MOV A,M (A=sector valid flag) --ME- A=00 B=0002 D=A100 H=97F4 S=6FD0 P=9359 ORA A (check for flag) -Z-E- A=00 B=0002 D=A100 H=97F4 S=6FD0 P=935A RNZ (good sector, so do not return) -Z-E- A=00 B=0002 D=A100 H=97F4 S=6FD0 P=935B LXI D,0008 (8=DATDATA+1, DE=offset to data portion of sector) -Z-E- A=00 B=0002 D=0008 H=97F4 S=6FD0 P=935E LDA A97A (lda @TRK) -Z-E- A=02 B=0002 D=0008 H=97F4 S=6FD0 P=9361 CPI 06 (cpi DATATRK) C-ME- A=02 B=0002 D=0008 H=97F4 S=6FD0 P=9363 JNC 9369 (jnc mrMove - if data track already correct) C-ME- A=02 B=0002 D=0008 H=97F4 S=6FD0 P=9366 LXI D,0004 (4=SYSDATA+1, DE=offset to data portion of sector) C-ME- A=02 B=0002 D=0004 H=97F4 S=6FD0 P=9369 DAD D --ME- A=02 B=0002 D=0004 H=97F8 S=6FD0 P=936A XCHG --ME- A=02 B=0002 D=97F8 H=0004 S=6FD0 P=936B LHLD A97E (@DMA = 96A5) --ME- A=02 B=0002 D=97F8 H=96A5 S=6FD0 P=936E MVI B,80 (CSECLEN - 128 - number of bytes to move) --ME- A=02 B=8002 D=97F8 H=96A5 S=6FD0 P=9370 LDAX D --ME- A=E5 B=8002 D=97F8 H=96A5 S=6FD0 P=9371 MOV M,A --ME- A=E5 B=8002 D=97F8 H=96A5 S=6FD0 P=9372 INX H --ME- A=E5 B=8002 D=97F8 H=96A6 S=6FD0 P=9373 INX D --ME- A=E5 B=8002 D=97F9 H=96A6 S=6FD0 P=9374 DCR B ----- A=E5 B=7F02 D=97F9 H=96A6 S=6FD0 P=9375 JNZ 9370 *9370 #T#6 ----- A=E5 B=7F02 D=97F9 H=96A6 S=6FD0 P=9370 LDAX D ----- A=E5 B=7F02 D=97F9 H=96A6 S=6FD0 P=9371 MOV M,A ----- A=E5 B=7F02 D=97F9 H=96A6 S=6FD0 P=9372 INX H ----- A=E5 B=7F02 D=97F9 H=96A7 S=6FD0 P=9373 INX D ----- A=E5 B=7F02 D=97FA H=96A7 S=6FD0 P=9374 DCR B ---EI A=E5 B=7E02 D=97FA H=96A7 S=6FD0 P=9375 JNZ 9370 *9370 #T#6 ---EI A=E5 B=7E02 D=97FA H=96A7 S=6FD0 P=9370 LDAX D ---EI A=E5 B=7E02 D=97FA H=96A7 S=6FD0 P=9371 MOV M,A ---EI A=E5 B=7E02 D=97FA H=96A7 S=6FD0 P=9372 INX H ---EI A=E5 B=7E02 D=97FA H=96A8 S=6FD0 P=9373 INX D ---EI A=E5 B=7E02 D=97FB H=96A8 S=6FD0 P=9374 DCR B ---EI A=E5 B=7D02 D=97FB H=96A8 S=6FD0 P=9375 JNZ 9370 *9370 ... #T#6 ---EI A=E5 B=0302 D=9875 H=9722 S=6FD0 P=9370 LDAX D ---EI A=E5 B=0302 D=9875 H=9722 S=6FD0 P=9371 MOV M,A ---EI A=E5 B=0302 D=9875 H=9722 S=6FD0 P=9372 INX H ---EI A=E5 B=0302 D=9875 H=9723 S=6FD0 P=9373 INX D ---EI A=E5 B=0302 D=9876 H=9723 S=6FD0 P=9374 DCR B ----I A=E5 B=0202 D=9876 H=9723 S=6FD0 P=9375 JNZ 9370 *9370 #T#6 ----I A=E5 B=0202 D=9876 H=9723 S=6FD0 P=9370 LDAX D ----I A=E5 B=0202 D=9876 H=9723 S=6FD0 P=9371 MOV M,A ----I A=E5 B=0202 D=9876 H=9723 S=6FD0 P=9372 INX H ----I A=E5 B=0202 D=9876 H=9724 S=6FD0 P=9373 INX D ----I A=E5 B=0202 D=9877 H=9724 S=6FD0 P=9374 DCR B ----I A=E5 B=0102 D=9877 H=9724 S=6FD0 P=9375 JNZ 9370 *9370 #TW6 ----I A=E5 B=0102 D=9877 H=9724 S=6FD0 P=9370 LDAX D ----I A=E5 B=0102 D=9877 H=9724 S=6FD0 P=9371 MOV M,A ----I A=E5 B=0102 D=9877 H=9724 S=6FD0 P=9372 INX H ----I A=E5 B=0102 D=9877 H=9725 S=6FD0 P=9373 INX D ----I A=E5 B=0102 D=9878 H=9725 S=6FD0 P=9374 DCR B -Z-EI A=E5 B=0002 D=9878 H=9725 S=6FD0 P=9375 JNZ 9370 *9378 #T -Z-EI A=E5 B=0002 D=9878 H=9725 S=6FD0 P=9378 RET *933F #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ # ======================================================================
OK, so I now see the data was successfully read and placed into @DMA.
Problem is it's all E5 bytes.
At first I thought maybe it was reading the IDE drive. But it can't be. The IDE module is not even linked in.
The diskette in the drive is a CPM 2.2 diskette that boots. It includes CPM3.SYS - the one I'm debugging - and CCP.COM and CPMLDR.COM. So SID can execute these files and talk to the disk. But what it reads is all E5 characters.
Let's pick back up where we left off. Setting breakpoint at 933F, right after the RET at the end of movRead, back into fdRead.
====================================================================== A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #G8E00,933F CP/M Plus v3.0hd *933F #DA97A,A97C A97A: 02 00 01 (lookin' at track 2, sector 1) #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #T -Z-EI A=E5 B=0002 D=9878 H=9725 S=6FD2 P=933F MVI A,00 *9341 #T -Z-EI A=00 B=0002 D=9878 H=9725 S=6FD2 P=9341 RZ *7767 #P9331 #G (let's see if we fdRead again) 01 PASS 9331 (yes, looks like we do) C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #P933F (let's do the read and see what we get) 01 PASS 933F -Z-EI A=E5 B=0012 D=9CC0 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 09 (track 2, sector 9) #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 (another fdRead) C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F (another movRead) -Z-EI A=E5 B=0032 D=A550 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 11 (track 2, sector 11) #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 (read again) C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F (memcpy again) -Z-EI A=E5 B=0032 D=A550 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 19 (track 2, sector 19) #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=0006 D=998A H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 03 ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=0016 D=9DD2 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 0B ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=0026 D=A21A H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 13 ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=0036 D=A662 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 1B ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=000A D=9A9C H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 05 ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=001A D=9EE4 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 0D ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=002A D=A32C H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 15 ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=003A D=A774 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 1D ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=000E D=9BAE H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 07 ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=001E D=9FF6 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 0F ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=002E D=A43E H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 17 ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=003E D=A886 H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 1F ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=0002 D=9878 H=9725 S=6FD4 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 01 ... #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 9446 *9446 #G 01 PASS 933F -Z-EI A=E5 B=0012 D=9CC0 H=9725 S=6FD4 P=933F MVI A,00 *9341 #DA97A,A97C A97A: 02 00 09 #D96A5 96A5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96B5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96C5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96D5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96E5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96F5: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9705: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9715: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G BIOS ERR ON A: NO CCP.COM FILE ======================================================================
That's where the code gave up and decided the disk didn't have CCP.COM on it.
It tried these sectors on track 2 in the following order:
01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F,01,09
That's 18 sector reads. Notice it did 16 and then repeated the first two.
In decimal, the order of sectors is as follows:
01,09,17,25,03,11,19,27,05,13,21,29,07,15,23,31
Sanity check. Let's see what the Douglas CP/M 3.0 BIOS does in bootup.
I built a copy with topmem=A7. That makes a version with the jump table in the same place as the modular version I'm working on, 8E00. This leaves enough room for SID.
====================================================================== A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1A00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP 8E61 (boot) 8E03 JMP 8EB9 (wboot) 8E06 JMP 8FA3 (const) 8E09 JMP 8F8A (conin) 8E0C JMP 8F9D (conout) 8E0F JMP 8FC7 (list) 8E12 JMP 8FB5 (auxout) 8E15 JMP 8FAF (auxin) 8E18 JMP 90D5 (home) 8E1B JMP 90C2 (seldsk) 8E1E JMP 90DA (settrk) 8E21 JMP 90DF (setsec) 8E24 JMP 90E5 (setdma) 8E27 JMP 90F2 (read) 8E2A JMP 9105 (write) 8E2D JMP 8FCD (listst) 8E30 JMP 90EB (sectrn) 8E33 JMP 8FA9 (conost) 8E36 JMP 8FBB (auxist) 8E39 JMP 8FC1 (auxost) 8E3C JMP 8F74 (devtbl) 8E3F JMP 8F89 (devini) 8E42 JMP 8F78 (drvtbl) 8E45 JMP 8F89 (multio) 8E48 JMP 8F87 (flush) 8E4B JMP 8F7C (move) 8E4E JMP 8F89 (time) 8E51 JMP 8F89 (selmem) 8E54 JMP 8F89 (setbnk) 8E57 JMP 8F89 (xmove) 8E5A JMP 8EB9 (userf) 8E5D JMP 8EB9 (reserv1) 8E60 RLC (reserv2) #G8E00,90F2 (read breakpoint) CP/M 3 BIOS v1.0 for Altair 8" Floppy *90F2 #T#5 ----I A=01 B=9501 D=0000 H=9561 S=6FD2 P=90F2 CALL 9207 (call ckFlush) ----I A=01 B=9501 D=0000 H=9561 S=6FD0 P=9207 LDA 9556 (bfDirty) ----I A=00 B=9501 D=0000 H=9561 S=6FD0 P=920A ORA A -Z-E- A=00 B=9501 D=0000 H=9561 S=6FD0 P=920B RZ -Z-E- A=00 B=9501 D=0000 H=9561 S=6FD2 P=90F5 EI (done with ckFlush) *90F6 #TW -Z-E- A=00 B=9501 D=0000 H=9561 S=6FD2 P=90F6 CALL 91A0 (readTrk) *90F9 #T -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD2 P=90F9 EI -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD2 P=90FA JNZ 9100 (exitDio) -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD2 P=90FD CALL 9113 (movRead) -Z-EI A=00 B=0082 D=A100 H=0200 S=6FD0 P=9113 CALL 9190 (altSkew) -Z-EI A=00 B=0082 D=A100 H=0200 S=6FCE P=9190 LDA 955A (@TRK) -Z-EI A=02 B=0082 D=A100 H=0200 S=6FCE P=9193 CPI 06 (06=DATATRK) C-ME- A=02 B=0082 D=A100 H=0200 S=6FCE P=9195 LDA 955B (@SECT) C-ME- A=00 B=0082 D=A100 H=0200 S=6FCE P=9198 RC C-ME- A=00 B=0082 D=A100 H=0200 S=6FD0 P=9116 CALL 936B (dSecAdr) C-ME- A=00 B=0082 D=A100 H=0200 S=6FCE P=936B LXI H,9429 (secAddr) C-ME- A=00 B=0082 D=A100 H=9429 S=6FCE P=936E MVI B,00 C-ME- A=00 B=0082 D=A100 H=9429 S=6FCE P=9370 RLC --ME- A=00 B=0082 D=A100 H=9429 S=6FCE P=9371 MOV C,A --ME- A=00 B=0000 D=A100 H=9429 S=6FCE P=9372 DAD B --ME- A=00 B=0000 D=A100 H=9429 S=6FCE P=9373 MOV A,M --ME- A=6D B=0000 D=A100 H=9429 S=6FCE P=9374 INX H --ME- A=6D B=0000 D=A100 H=942A S=6FCE P=9375 MOV H,M --ME- A=6D B=0000 D=A100 H=962A S=6FCE P=9376 MOV L,A --ME- A=6D B=0000 D=A100 H=966D S=6FCE P=9377 RET (ret to movRead with HL=sectorBuffer 966D) --ME- A=6D B=0000 D=A100 H=966D S=6FD0 P=9119 MOV A,M (A=valid sector flag) --ME- A=00 B=0000 D=A100 H=966D S=6FD0 P=911A ORA A (check for flag) -Z-E- A=00 B=0000 D=A100 H=966D S=6FD0 P=911B RNZ (good sector, so do not return) -Z-E- A=00 B=0000 D=A100 H=966D S=6FD0 P=911C LXI D,0008 (8=DATDATA+1, DE=offset to data portion of sector) -Z-E- A=00 B=0000 D=0008 H=966D S=6FD0 P=911F LDA 955A (lda @TRK) -Z-E- A=02 B=0000 D=0008 H=966D S=6FD0 P=9122 CPI 06 (cpi DATATRK) C-ME- A=02 B=0000 D=0008 H=966D S=6FD0 P=9124 JNC 912A (jnc mrMove - if data track already correct) C-ME- A=02 B=0000 D=0008 H=966D S=6FD0 P=9127 LXI D,0004 (4=SYSDATA+1, DE=offset to data portion of sector) C-ME- A=02 B=0000 D=0004 H=966D S=6FD0 P=912A DAD D --ME- A=02 B=0000 D=0004 H=9671 S=6FD0 P=912B XCHG --ME- A=02 B=0000 D=9671 H=0004 S=6FD0 P=912C LHLD 955C (@DMA = 9561) --ME- A=02 B=0000 D=9671 H=9561 S=6FD0 P=912F MVI B,80 (CSECLEN - 128 - number of bytes to move) *9131 #T#6 --ME- A=02 B=8000 D=9671 H=9561 S=6FD0 P=9131 LDAX D --ME- A=00 B=8000 D=9671 H=9561 S=6FD0 P=9132 MOV M,A --ME- A=00 B=8000 D=9671 H=9561 S=6FD0 P=9133 INX H --ME- A=00 B=8000 D=9671 H=9562 S=6FD0 P=9134 INX D --ME- A=00 B=8000 D=9672 H=9562 S=6FD0 P=9135 DCR B ----- A=00 B=7F00 D=9672 H=9562 S=6FD0 P=9136 JNZ 9131 *9131 #T#6 ----- A=00 B=7F00 D=9672 H=9562 S=6FD0 P=9131 LDAX D ----- A=4C B=7F00 D=9672 H=9562 S=6FD0 P=9132 MOV M,A ----- A=4C B=7F00 D=9672 H=9562 S=6FD0 P=9133 INX H ----- A=4C B=7F00 D=9672 H=9563 S=6FD0 P=9134 INX D ----- A=4C B=7F00 D=9673 H=9563 S=6FD0 P=9135 DCR B ---EI A=4C B=7E00 D=9673 H=9563 S=6FD0 P=9136 JNZ 9131 *9131 #T#6 ---EI A=4C B=7E00 D=9673 H=9563 S=6FD0 P=9131 LDAX D ---EI A=38 B=7E00 D=9673 H=9563 S=6FD0 P=9132 MOV M,A ---EI A=38 B=7E00 D=9673 H=9563 S=6FD0 P=9133 INX H ---EI A=38 B=7E00 D=9673 H=9564 S=6FD0 P=9134 INX D ---EI A=38 B=7E00 D=9674 H=9564 S=6FD0 P=9135 DCR B ---EI A=38 B=7D00 D=9674 H=9564 S=6FD0 P=9136 JNZ 9131 *9131 ... #T#6 ----I A=00 B=0400 D=96ED H=95DD S=6FD0 P=9131 LDAX D ----I A=00 B=0400 D=96ED H=95DD S=6FD0 P=9132 MOV M,A ----I A=00 B=0400 D=96ED H=95DD S=6FD0 P=9133 INX H ----I A=00 B=0400 D=96ED H=95DE S=6FD0 P=9134 INX D ----I A=00 B=0400 D=96EE H=95DE S=6FD0 P=9135 DCR B ---EI A=00 B=0300 D=96EE H=95DE S=6FD0 P=9136 JNZ 9131 *9131 #T#6 ---EI A=00 B=0300 D=96EE H=95DE S=6FD0 P=9131 LDAX D ---EI A=00 B=0300 D=96EE H=95DE S=6FD0 P=9132 MOV M,A ---EI A=00 B=0300 D=96EE H=95DE S=6FD0 P=9133 INX H ---EI A=00 B=0300 D=96EE H=95DF S=6FD0 P=9134 INX D ---EI A=00 B=0300 D=96EF H=95DF S=6FD0 P=9135 DCR B ----I A=00 B=0200 D=96EF H=95DF S=6FD0 P=9136 JNZ 9131 *9131 #T#6 ----I A=00 B=0200 D=96EF H=95DF S=6FD0 P=9131 LDAX D ----I A=00 B=0200 D=96EF H=95DF S=6FD0 P=9132 MOV M,A ----I A=00 B=0200 D=96EF H=95DF S=6FD0 P=9133 INX H ----I A=00 B=0200 D=96EF H=95E0 S=6FD0 P=9134 INX D ----I A=00 B=0200 D=96F0 H=95E0 S=6FD0 P=9135 DCR B ----I A=00 B=0100 D=96F0 H=95E0 S=6FD0 P=9136 JNZ 9131 *9131 #T#6 ----I A=00 B=0100 D=96F0 H=95E0 S=6FD0 P=9131 LDAX D ----I A=00 B=0100 D=96F0 H=95E0 S=6FD0 P=9132 MOV M,A ----I A=00 B=0100 D=96F0 H=95E0 S=6FD0 P=9133 INX H ----I A=00 B=0100 D=96F0 H=95E1 S=6FD0 P=9134 INX D ----I A=00 B=0100 D=96F1 H=95E1 S=6FD0 P=9135 DCR B -Z-EI A=00 B=0000 D=96F1 H=95E1 S=6FD0 P=9136 JNZ 9131 *9139 #T -Z-EI A=00 B=0000 D=96F1 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 00 .. #D9561 9561: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 9571: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 9591: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 95B1: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 95D1: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95F1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #P9139 #G 01 PASS 9139 -Z-EI A=00 B=0020 D=9F81 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 10 .. #D9561 9561: 00 53 55 42 4D 49 54 20 20 43 4F 4D 00 00 00 11 .SUBMIT COM.... 9571: 15 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 4C 4F 41 44 20 20 20 20 43 4F 4D 00 00 00 10 .LOAD COM.... 9591: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 53 55 52 56 45 59 20 20 43 4F 4D 00 00 00 09 .SURVEY COM.... 95B1: 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 56 49 45 57 20 20 20 20 43 4F 4D 00 00 00 03 .VIEW COM.... 95D1: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF F8 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95F1: 00 00 00 7E 65 00 00 00 00 00 00 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0030 D=A3C9 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 18 .. #D9561 9561: 00 4D 38 30 20 20 20 20 20 43 4F 4D 00 00 00 80 .M80 COM.... 9571: 1A 1B 1C 1D 1E 1F 20 21 00 00 00 00 00 00 00 00 ...... !........ 9581: 00 4D 38 30 20 20 20 20 20 43 4F 4D 01 00 00 1D .M80 COM.... 9591: 22 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "#.............. 95A1: 00 4D 41 43 20 20 20 20 20 43 4F 4D 00 00 00 5C .MAC COM...\ 95B1: 24 25 26 27 28 29 00 00 00 00 00 00 00 00 00 00 $%&'().......... 95C1: 00 4D 42 41 53 49 43 20 20 43 4F 4D 00 00 00 80 .MBASIC COM.... 95D1: 2A 2B 2C 2D 2E 2F 30 31 00 00 00 00 00 00 00 00 *+,-./01........ 95E1: FF FF FF C0 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95F1: 00 00 00 7E 65 11 00 00 00 00 00 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0004 D=9803 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 02 .. #D9561 9561: 00 4D 42 41 53 49 43 20 20 43 4F 4D 01 00 00 3E .MBASIC COM...> 9571: 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 2345............ 9581: 00 50 49 50 20 20 20 20 20 43 4F 4D 00 00 00 3A .PIP COM...: 9591: 36 37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 6789............ 95A1: 00 53 54 41 54 20 20 20 20 43 4F 4D 00 00 00 2A .STAT COM...* 95B1: 3A 3B 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 :;<............. 95C1: 00 44 44 54 20 20 20 20 20 43 4F 4D 00 00 00 26 .DDT COM...& 95D1: 3D 3E 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 =>?............. 95E1: FF FF FF FF FF FF C0 00 00 00 00 00 00 00 00 00 ................ 95F1: 00 00 00 7E 65 11 1E 00 00 00 00 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0014 D=9C4B H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 0A .. #D9561 9561: 00 50 43 50 55 54 20 20 20 43 4F 4D 00 00 00 08 .PCPUT COM.... 9571: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... 9581: 00 4E 53 57 50 20 20 20 20 43 4F 4D 00 00 00 58 .NSWP COM...X 9591: 41 42 43 44 45 46 00 00 00 00 00 00 00 00 00 00 ABCDEF.......... 95A1: 00 53 59 53 47 45 4E 20 20 43 4F 4D 00 00 00 09 .SYSGEN COM.... 95B1: 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 G............... 95C1: 00 50 43 47 45 54 20 20 20 43 4F 4D 00 00 00 07 .PCGET COM.... 95D1: 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 H............... 95E1: FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 ................ 95F1: 00 00 00 7E 65 11 1E 16 00 00 00 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0024 D=A093 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 12 .. #D9561 9561: 00 43 52 43 20 20 20 20 20 43 4F 4D 00 00 00 11 .CRC COM.... 9571: 49 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 IJ.............. 9581: 00 4D 4F 56 43 50 4D 20 20 43 4F 4D 00 00 00 53 .MOVCPM COM...S 9591: 4B 4C 4D 4E 4F 50 00 00 00 00 00 00 00 00 00 00 KLMNOP.......... 95A1: 00 53 49 44 20 20 20 20 20 43 4F 4D 00 00 00 3E .SID COM...> 95B1: 51 52 53 54 00 00 00 00 00 00 00 00 00 00 00 00 QRST............ 95C1: 00 43 50 4D 4C 44 52 20 20 43 4F 4D 00 00 00 48 .CPMLDR COM...H 95D1: 55 56 57 58 59 00 00 00 00 00 00 00 00 00 00 00 UVWXY........... 95E1: FF FF FF FF FF FF FF FF FF 80 00 00 00 00 00 00 ................ 95F1: 00 00 00 7E 65 11 1E 16 CE 00 00 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=0034 D=A4DB H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 1A .. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 00 00 00 00 ................ 95F1: 00 00 00 7E 65 11 1E 16 CE D5 00 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=0008 D=9915 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 04 .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=0018 D=9D5D H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 0C .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=0028 D=A1A5 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 14 .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=0038 D=A5ED H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 1C .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=000C D=9A27 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 06 .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=001C D=9E6F H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 0E .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=002C D=A2B7 H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 16 .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=003C D=A6FF H=95E1 S=6FD0 P=9139 RET *9100 #D955A,955B 955A: 02 1E .. #D9561 9561: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9571: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9581: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 9591: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95A1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95B1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0000 D=96F1 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 00 .. #D9561 9561: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 9571: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 9591: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 95B1: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 95D1: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0010 D=9B39 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 08 .. #D9561 9561: 00 44 55 4D 50 20 20 20 20 43 4F 4D 00 00 00 03 .DUMP COM.... 9571: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 58 53 55 42 20 20 20 20 43 4F 4D 00 00 00 06 .XSUB COM.... 9591: 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 46 4F 52 4D 41 54 20 20 43 4F 4D 00 00 00 0E .FORMAT COM.... 95B1: 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 4C 53 20 20 20 20 20 20 43 4F 4D 00 00 00 18 .LS COM.... 95D1: 13 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0020 D=9F81 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 10 .. #D9561 9561: 00 53 55 42 4D 49 54 20 20 43 4F 4D 00 00 00 11 .SUBMIT COM.... 9571: 15 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 4C 4F 41 44 20 20 20 20 43 4F 4D 00 00 00 10 .LOAD COM.... 9591: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 53 55 52 56 45 59 20 20 43 4F 4D 00 00 00 09 .SURVEY COM.... 95B1: 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 56 49 45 57 20 20 20 20 43 4F 4D 00 00 00 03 .VIEW COM.... 95D1: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0030 D=A3C9 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 18 .. #D9561 9561: 00 4D 38 30 20 20 20 20 20 43 4F 4D 00 00 00 80 .M80 COM.... 9571: 1A 1B 1C 1D 1E 1F 20 21 00 00 00 00 00 00 00 00 ...... !........ 9581: 00 4D 38 30 20 20 20 20 20 43 4F 4D 01 00 00 1D .M80 COM.... 9591: 22 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "#.............. 95A1: 00 4D 41 43 20 20 20 20 20 43 4F 4D 00 00 00 5C .MAC COM...\ 95B1: 24 25 26 27 28 29 00 00 00 00 00 00 00 00 00 00 $%&'().......... 95C1: 00 4D 42 41 53 49 43 20 20 43 4F 4D 00 00 00 80 .MBASIC COM.... 95D1: 2A 2B 2C 2D 2E 2F 30 31 00 00 00 00 00 00 00 00 *+,-./01........ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0004 D=9803 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 02 .. #D9561 9561: 00 4D 42 41 53 49 43 20 20 43 4F 4D 01 00 00 3E .MBASIC COM...> 9571: 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 2345............ 9581: 00 50 49 50 20 20 20 20 20 43 4F 4D 00 00 00 3A .PIP COM...: 9591: 36 37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 6789............ 95A1: 00 53 54 41 54 20 20 20 20 43 4F 4D 00 00 00 2A .STAT COM...* 95B1: 3A 3B 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 :;<............. 95C1: 00 44 44 54 20 20 20 20 20 43 4F 4D 00 00 00 26 .DDT COM...& 95D1: 3D 3E 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 =>?............. 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0014 D=9C4B H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 0A .. #D9561 9561: 00 50 43 50 55 54 20 20 20 43 4F 4D 00 00 00 08 .PCPUT COM.... 9571: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... 9581: 00 4E 53 57 50 20 20 20 20 43 4F 4D 00 00 00 58 .NSWP COM...X 9591: 41 42 43 44 45 46 00 00 00 00 00 00 00 00 00 00 ABCDEF.......... 95A1: 00 53 59 53 47 45 4E 20 20 43 4F 4D 00 00 00 09 .SYSGEN COM.... 95B1: 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 G............... 95C1: 00 50 43 47 45 54 20 20 20 43 4F 4D 00 00 00 07 .PCGET COM.... 95D1: 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 H............... 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0024 D=A093 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 12 .. #D9561 9561: 00 43 52 43 20 20 20 20 20 43 4F 4D 00 00 00 11 .CRC COM.... 9571: 49 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 IJ.............. 9581: 00 4D 4F 56 43 50 4D 20 20 43 4F 4D 00 00 00 53 .MOVCPM COM...S 9591: 4B 4C 4D 4E 4F 50 00 00 00 00 00 00 00 00 00 00 KLMNOP.......... 95A1: 00 53 49 44 20 20 20 20 20 43 4F 4D 00 00 00 3E .SID COM...> 95B1: 51 52 53 54 00 00 00 00 00 00 00 00 00 00 00 00 QRST............ 95C1: 00 43 50 4D 4C 44 52 20 20 43 4F 4D 00 00 00 48 .CPMLDR COM...H 95D1: 55 56 57 58 59 00 00 00 00 00 00 00 00 00 00 00 UVWXY........... 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=0034 D=A4DB H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 1A .. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=C3 B=0000 D=96F5 H=0180 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 00 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0010 D=9B3D H=0200 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 08 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=03 B=0020 D=9F85 H=0280 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 10 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0030 D=A3CD H=0300 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 18 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0004 D=9807 H=0380 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 02 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=1A B=0014 D=9C4F H=0400 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 0A 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=36 B=0024 D=A097 H=0480 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 12 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=46 B=0034 D=A4DF H=0500 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 1A 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=F1 B=0008 D=9919 H=0580 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 04 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=07 B=0018 D=9D61 H=0600 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 0C 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00......... #G 01 PASS 9139 -Z-EI A=11 B=0028 D=A1A9 H=0680 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 14 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=0D B=0038 D=A5F1 H=0700 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 1C 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=07 B=000C D=9A2B H=0780 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 06 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=04 B=001C D=9E73 H=0800 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 0E 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=B0 B=002C D=A2BB H=0880 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 16 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=77 B=003C D=A703 H=0900 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 1E 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0022 D=A00E H=0980 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 01 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=F6 B=0032 D=A456 H=0A00 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 09 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=72 B=0002 D=977E H=0A80 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 11 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=B5 B=0012 D=9BC6 H=0B00 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 19 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=78 B=0026 D=A120 H=0B80 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 03 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=2A B=0036 D=A568 H=0C00 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 0B 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=87 B=0006 D=9890 H=0C80 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 13 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=3A B=0016 D=9CD8 H=0D00 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 1B 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=002A D=A232 H=0D80 S=6FE4 P=9139 RET *9100 #D955A,955B 955A: 33 05 3. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0000 D=96F1 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 00 .. #D9561 9561: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 9571: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 9591: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 95B1: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 95D1: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0010 D=9B39 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 08 .. #D9561 9561: 00 44 55 4D 50 20 20 20 20 43 4F 4D 00 00 00 03 .DUMP COM.... 9571: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 58 53 55 42 20 20 20 20 43 4F 4D 00 00 00 06 .XSUB COM.... 9591: 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 46 4F 52 4D 41 54 20 20 43 4F 4D 00 00 00 0E .FORMAT COM.... 95B1: 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 4C 53 20 20 20 20 20 20 43 4F 4D 00 00 00 18 .LS COM.... 95D1: 13 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0020 D=9F81 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 10 .. #D9561 9561: 00 53 55 42 4D 49 54 20 20 43 4F 4D 00 00 00 11 .SUBMIT COM.... 9571: 15 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 4C 4F 41 44 20 20 20 20 43 4F 4D 00 00 00 10 .LOAD COM.... 9591: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 53 55 52 56 45 59 20 20 43 4F 4D 00 00 00 09 .SURVEY COM.... 95B1: 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 56 49 45 57 20 20 20 20 43 4F 4D 00 00 00 03 .VIEW COM.... 95D1: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0030 D=A3C9 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 18 .. #D9561 9561: 00 4D 38 30 20 20 20 20 20 43 4F 4D 00 00 00 80 .M80 COM.... 9571: 1A 1B 1C 1D 1E 1F 20 21 00 00 00 00 00 00 00 00 ...... !........ 9581: 00 4D 38 30 20 20 20 20 20 43 4F 4D 01 00 00 1D .M80 COM.... 9591: 22 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "#.............. 95A1: 00 4D 41 43 20 20 20 20 20 43 4F 4D 00 00 00 5C .MAC COM...\ 95B1: 24 25 26 27 28 29 00 00 00 00 00 00 00 00 00 00 $%&'().......... 95C1: 00 4D 42 41 53 49 43 20 20 43 4F 4D 00 00 00 80 .MBASIC COM.... 95D1: 2A 2B 2C 2D 2E 2F 30 31 00 00 00 00 00 00 00 00 *+,-./01........ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0004 D=9803 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 02 .. #D9561 9561: 00 4D 42 41 53 49 43 20 20 43 4F 4D 01 00 00 3E .MBASIC COM...> 9571: 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 2345............ 9581: 00 50 49 50 20 20 20 20 20 43 4F 4D 00 00 00 3A .PIP COM...: 9591: 36 37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 6789............ 95A1: 00 53 54 41 54 20 20 20 20 43 4F 4D 00 00 00 2A .STAT COM...* 95B1: 3A 3B 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 :;<............. 95C1: 00 44 44 54 20 20 20 20 20 43 4F 4D 00 00 00 26 .DDT COM...& 95D1: 3D 3E 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 =>?............. 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0014 D=9C4B H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 0A .. #D9561 9561: 00 50 43 50 55 54 20 20 20 43 4F 4D 00 00 00 08 .PCPUT COM.... 9571: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... 9581: 00 4E 53 57 50 20 20 20 20 43 4F 4D 00 00 00 58 .NSWP COM...X 9591: 41 42 43 44 45 46 00 00 00 00 00 00 00 00 00 00 ABCDEF.......... 95A1: 00 53 59 53 47 45 4E 20 20 43 4F 4D 00 00 00 09 .SYSGEN COM.... 95B1: 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 G............... 95C1: 00 50 43 47 45 54 20 20 20 43 4F 4D 00 00 00 07 .PCGET COM.... 95D1: 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 H............... 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=00 B=0024 D=A093 H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 12 .. #D9561 9561: 00 43 52 43 20 20 20 20 20 43 4F 4D 00 00 00 11 .CRC COM.... 9571: 49 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 IJ.............. 9581: 00 4D 4F 56 43 50 4D 20 20 43 4F 4D 00 00 00 53 .MOVCPM COM...S 9591: 4B 4C 4D 4E 4F 50 00 00 00 00 00 00 00 00 00 00 KLMNOP.......... 95A1: 00 53 49 44 20 20 20 20 20 43 4F 4D 00 00 00 3E .SID COM...> 95B1: 51 52 53 54 00 00 00 00 00 00 00 00 00 00 00 00 QRST............ 95C1: 00 43 50 4D 4C 44 52 20 20 43 4F 4D 00 00 00 48 .CPMLDR COM...H 95D1: 55 56 57 58 59 00 00 00 00 00 00 00 00 00 00 00 UVWXY........... 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9139 -Z-EI A=E5 B=0034 D=A4DB H=95E1 S=6FD2 P=9139 RET *9100 #D955A,955B 955A: 02 1A .. #D9561 9561: E5 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 9571: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 9581: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 9591: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 95A1: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 74 .CPM3 SYS...t 95B1: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 95C1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95D1: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF C0 3F F0 00 00 ............?... 95F1: 00 00 00 7E 65 11 1E 16 CE D5 0A 00 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G A> ======================================================================
CP/M is loaded, as is evidenced by the "A>" prompt.
Back to the modular code:
Going to jump right to the fdRead function, see what track it's trying to read. If not the same as the Douglas code, I'll manipulate @TRK and @SECT and run the read function to see what happens. After the function returns - and the memcpy (mrMove) function runs - I'll examine @DMA to see what we have.
====================================================================== A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P9331 (passpoint at beginning of fdRead) #P933F (passpoint at end of mrMove) #G8E00 CP/M Plus v3.0hd 01 PASS 9331 (execution stopped at the passpoint at the beginning of fdRead) C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 9446 *9446 #DA97A,A97C (A97A is @TRK and A97C is @SECT) A97A: 02 00 01 (so it wants to read track 2, sector 1) #SA97C (command to set memory at location A97C, which is @SECT) A97C 01 00 (change 01 to 00) A97D 00 . (. command to end data entry) #DA97A,A97C (examine memory to confirm) A97A: 02 00 00 (now it wants to read track 2, sector 0 - just like Douglas's BIOS) #G (go) 01 PASS 933F (execution stopped at the passpoint at the end of mrMove) -Z-EI A=00 B=0000 D=97EF H=9725 S=6FD2 P=933F MVI A,00 *9341 #DA97A,A97C (look again at @TRK and @SECT, just as a sanity check) A97A: 02 00 00 (still track 2, sector 0) #D96A5 (examine @DMA block) 96A5: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 96B5: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 96C5: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 96D5: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96E5: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 96F5: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9705: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 9715: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9725: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9735: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9745: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9755: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ # ======================================================================
OK, there we go. I see now the read works just fine. What doesn't work is whatever is setting the sequence of sectors for the directory read.
The sector sequence should be:
00,10,18,02,0A,12,1A,04,0C,14,1C,06,0E,16,1E (in hex) -or- 00,16,24,02,10,18,26,04,12,20,28,06,14,22,30 (in decimal)
The sequence it tries to do right now is this:
01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F,01,09 (in hex) -or- 01,09,17,25,03,11,19,27,05,13,21,29,07,15,23,31,01,09 (in decimal)
So that's what I'll investigate next.
Looking at setsec, to see what it is initially set for.
First, from modular cpm3.sys:
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #PA902 (setsec) #G8E00 CP/M Plus v3.0hd 01 PASS A902 --ME- A=9F B=0001 D=0000 H=0001 S=6FD0 P=A902 MOV L,C *A903 =======================================================================
BC is requested sector number, so we can already see it is set to 1.
Now using the Douglas BIOS. The requested sector is also 1, so something
is translating it back to 0 after this point. The skewing code does this,
and now I see that skewing logic must happen after this point.
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1A00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P90DF (setsec) #G8E00 CP/M 3 BIOS v1.0 for Altair 8" Floppy 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD0 P=90DF MOV A,C *90E0 # =======================================================================
Again, BC is requested sector number, so it is set to 1 in the Douglas BIOS too.
By the way, don't be fooled by the fact that the initial instruction is different.
Mike's code is a little different than DRI code. But it does the same thing.
Running the Douglas BIOS several times to observe the setsec sequence:
01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F
Now the modular BIOS:
01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F
So, as you can see, it's the same sequence issued by BDOS. Something after that
is modifying the sequence.
There are two sector modifiers - one (sectran) that is called by BDOS and another (altSkew) that is called withing the low-level read and write functions. That second one looks at the track and checks to see if it's a system track or not, which the directory is a part of. What the altSkew function considers a "system track" are those less than 6. So it should not be modifying the sector number when reading directory tracks. But maybe it is. Something sure is.
Watch [BC] for the track number.
Douglas BIOS run:
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1A00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P90DF #G8E00 CP/M 3 BIOS v1.0 for Altair 8" Floppy 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0009 D=0000 H=0009 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0011 D=0000 H=0011 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0019 D=0000 H=0019 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0003 D=0000 H=0003 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000B D=0000 H=000B S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0013 D=0000 H=0013 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001B D=0000 H=001B S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0005 D=0000 H=0005 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000D D=0000 H=000D S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0015 D=0000 H=0015 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001D D=0000 H=001D S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0007 D=0000 H=0007 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000F D=0000 H=000F S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0017 D=0000 H=0017 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001F D=0000 H=001F S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0009 D=0000 H=0009 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0011 D=0000 H=0011 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0019 D=0000 H=0019 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0003 D=0000 H=0003 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000B D=0000 H=000B S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0013 D=0000 H=0013 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001B D=0000 H=001B S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0001 D=0620 H=0001 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0009 D=0620 H=0009 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0011 D=0620 H=0011 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0019 D=0620 H=0019 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0003 D=0620 H=0003 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000B D=0620 H=000B S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0013 D=0620 H=0013 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001B D=0620 H=001B S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0005 D=0620 H=0005 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000D D=0620 H=000D S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0015 D=0620 H=0015 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001D D=0620 H=001D S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0007 D=0620 H=0007 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000F D=0620 H=000F S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0017 D=0620 H=0017 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001F D=0620 H=001F S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0002 D=0620 H=0002 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000A D=0620 H=000A S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0012 D=0620 H=0012 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001A D=0620 H=001A S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0004 D=0620 H=0004 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000C D=0620 H=000C S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0014 D=0620 H=0014 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001C D=0620 H=001C S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0006 D=0620 H=0006 S=6FE6 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0009 D=0000 H=0009 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0011 D=0000 H=0011 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0019 D=0000 H=0019 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0003 D=0000 H=0003 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000B D=0000 H=000B S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0013 D=0000 H=0013 S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001B D=0000 H=001B S=6FD2 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0005 D=0000 H=0005 S=6FD2 P=90DF MOV A,C *90E0 #G A> =======================================================================
Now a modular BIOS run.
Again, watch the track number sequence in [BC].
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #PA902 (setsec) #G8E00 CP/M Plus v3.0hd 01 PASS A902 --ME- A=9F B=0001 D=0000 H=0001 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0009 D=0001 H=0009 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0011 D=0002 H=0011 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0019 D=0003 H=0019 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0003 D=0004 H=0003 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=000B D=0005 H=000B S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0013 D=0006 H=0013 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=001B D=0007 H=001B S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0005 D=0008 H=0005 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=000D D=0009 H=000D S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0015 D=000A H=0015 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=001D D=000B H=001D S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0007 D=000C H=0007 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=000F D=000D H=000F S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0017 D=000E H=0017 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=001F D=000F H=001F S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0001 D=0000 H=0001 S=6FD2 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0009 D=0001 H=0009 S=6FD2 P=A902 MOV L,C *A903 #G BIOS ERR ON A: NO CCP.COM =======================================================================
Let's look at sectrn. Its job is to use the value of [BC] as an index into the tranTable. It does a lookup into the tranTable and returns the value that is [BC] elements into the array. That is used to translate the logical sector provided by BDOS into the physical sector required by the hardware layer. So let's see how the sectrn function in the modular code compares to the sectrn function in the Douglas code.
The current CPM3.SYS file is from the modular BIOS, so we'll test that first:
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #PA914 #G8E00 CP/M Plus v3.0hd 01 PASS A914 -Z-EI A=00 B=0000 D=930F H=0000 S=6FD0 P=A914 MOV L,C -Z-EI A=00 B=0000 D=930F H=0000 S=6FD0 P=A915 MOV H,B -Z-EI A=00 B=0000 D=930F H=0000 S=6FD0 P=A916 MOV A,D -Z-EI A=93 B=0000 D=930F H=0000 S=6FD0 P=A917 ORA E --ME- A=9F B=0000 D=930F H=0000 S=6FD0 P=A918 RZ --ME- A=9F B=0000 D=930F H=0000 S=6FD0 P=A919 XCHG --ME- A=9F B=0000 D=0000 H=930F S=6FD0 P=A91A DAD B --ME- A=9F B=0000 D=0000 H=930F S=6FD0 P=A91B MOV L,M --ME- A=9F B=0000 D=0000 H=9301 S=6FD0 P=A91C MVI H,00 --ME- A=9F B=0000 D=0000 H=0001 S=6FD0 P=A91E RET *784B =======================================================================
The first value is 01.
I'll set a passpoint at the RET instruction, which is where we should examine [HL] for the return value. And I'll remove the passpoint at the beginning of sectrn.
======================================================================= #PA91E #-PA914 #G 01 PASS A91E --ME- A=9F B=0001 D=0001 H=0009 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0002 D=0002 H=0011 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0003 D=0003 H=0019 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0004 D=0004 H=0003 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0005 D=0005 H=000B S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0006 D=0006 H=0013 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0007 D=0007 H=001B S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0008 D=0008 H=0005 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0009 D=0009 H=000D S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=000A D=000A H=0015 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=000B D=000B H=001D S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=000C D=000C H=0007 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=000D D=000D H=000F S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=000E D=000E H=0017 S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=000F D=000F H=001F S=6FD0 P=A91E RET *784B #G 01 PASS A91E --ME- A=9F B=0000 D=0000 H=0001 S=6FD2 P=A91E RET *784B =======================================================================
This accurately reflects the entries in the tranTable:
01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F,01,09 (in hex) -or- 01,09,17,25,03,11,19,27,05,13,21,29,07,15,23,31,01,09 (in decimal)
Let's look at the Douglas code and see what it does. Setsec is at 90EB in his code.
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1A00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P90EB #G8E00 CP/M 3 BIOS v1.0 for Altair 8" Floppy 01 PASS 90EB -Z-EI A=00 B=0000 D=950E H=0000 S=6FD0 P=90EB XCHG -Z-EI A=00 B=0000 D=0000 H=950E S=6FD0 P=90EC MVI B,00 -Z-EI A=00 B=0000 D=0000 H=950E S=6FD0 P=90EE DAD B -Z-EI A=00 B=0000 D=0000 H=950E S=6FD0 P=90EF MOV L,M -Z-EI A=00 B=0000 D=0000 H=9501 S=6FD0 P=90F0 MOV H,B -Z-EI A=00 B=0000 D=0000 H=0001 S=6FD0 P=90F1 RET *784B =======================================================================
Here we see the RET is at 90F1, so let's set a passpoint there and remove the one at 90EB, beginning of sectrn. Run the code 'til the end of the sequence - where it starts to repeat - and see what we've got:
======================================================================= #P90F1 #-P90EB #G 01 PASS 90F1 -Z-EI A=00 B=0001 D=0000 H=0009 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0002 D=0000 H=0011 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0003 D=0000 H=0019 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0004 D=0000 H=0003 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0005 D=0000 H=000B S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0006 D=0000 H=0013 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0007 D=0000 H=001B S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0008 D=0000 H=0005 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0009 D=0000 H=000D S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=000A D=0000 H=0015 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=000B D=0000 H=001D S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=000C D=0000 H=0007 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=000D D=0000 H=000F S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=000E D=0000 H=0017 S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=000F D=0000 H=001F S=6FD0 P=90F1 RET *784B #G 01 PASS 90F1 -Z-EI A=00 B=0000 D=0000 H=0001 S=6FD2 P=90F1 RET *784B =======================================================================
Same sequence. So the two versions of the code are in agreement in sectrn.
01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F,01,09 (in hex) -or- 01,09,17,25,03,11,19,27,05,13,21,29,07,15,23,31,01,09 (in decimal)
Now I need to learn how that is used to translate the logical sectors to physical sectors. This is the sequence of sectors we expect to see when reading the directory on track 2:
00,10,18,02,0A,12,1A,04,0C,14,1C,06,0E,16,1E (in hex) -or- 00,16,24,02,10,18,26,04,12,20,28,06,14,22,30 (in decimal)
The Douglas code takes the logical sectors from BDOS, and combines them with the values it gobbled up from sectrn and spits out the proper physical sector values. But not the modular code. It parrots the values from the tranTable, as if it were adding zero to the entries instead of doing the right math. Not a translation at all. My task is to find where the actual translation occurs and fix it.
Let's look at setsec. It's 90DF in the Douglas code and A902 in the modular code.
Douglas run creates same (01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F,01,09) sequence: ======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1A00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P90DF #G8E00 CP/M 3 BIOS v1.0 for Altair 8" Floppy 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD0 P=90DF MOV A,C *90E0 # #G 01 PASS 90DF -Z-EI A=00 B=0009 D=0000 H=0009 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0011 D=0000 H=0011 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0019 D=0000 H=0019 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0003 D=0000 H=0003 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000B D=0000 H=000B S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0013 D=0000 H=0013 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001B D=0000 H=001B S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0005 D=0000 H=0005 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000D D=0000 H=000D S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0015 D=0000 H=0015 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001D D=0000 H=001D S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0007 D=0000 H=0007 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=000F D=0000 H=000F S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0017 D=0000 H=0017 S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=001F D=0000 H=001F S=6FD0 P=90DF MOV A,C *90E0 #G 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD2 P=90DF MOV A,C *90E0 ======================================================================= Modular run also creates the same (01,09,11,19,03,0B,13,1B,05,0D,15,1D,07,0F,17,1F,01,09) sequence: ======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #PA902 #G8E00 CP/M Plus v3.0hd 01 PASS A902 --ME- A=9F B=0001 D=0000 H=0001 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0009 D=0001 H=0009 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0011 D=0002 H=0011 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0019 D=0003 H=0019 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0003 D=0004 H=0003 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=000B D=0005 H=000B S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0013 D=0006 H=0013 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=001B D=0007 H=001B S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0005 D=0008 H=0005 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=000D D=0009 H=000D S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0015 D=000A H=0015 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=001D D=000B H=001D S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0007 D=000C H=0007 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=000F D=000D H=000F S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0017 D=000E H=0017 S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=001F D=000F H=001F S=6FD0 P=A902 MOV L,C *A903 #G 01 PASS A902 --ME- A=9F B=0001 D=0000 H=0001 S=6FD2 P=A902 MOV L,C *A903 =======================================================================
Let's look at read. It's 90F2 in the Douglas code and A91F in the modular code. Each expects the sector number to be in memory, at the @SECT location. @TRK,@SECT is at A97A,A97C in the modular code. It's at 955A,955B in Douglas code.
Douglas code shows the updated sequence. But the modular code doesn't. So something happens in the Douglas code to update @SECT between setsec and read. It doesn't happen in the modular code. So let's single-step the Douglas code starting at setsec and watch for anything that touches 955B.
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1A00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P90DF (setsec) #G8E00 CP/M 3 BIOS v1.0 for Altair 8" Floppy 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD0 P=90DF MOV A,C *90E0 ##T -Z-EI A=01 B=0001 D=0000 H=0001 S=6FD0 P=90E0 DCR A *90E1 #T -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD0 P=90E1 STA 955B (Uuuh, yeah. Here it is.) *90E4 #T -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0009 D=0000 H=0009 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=09 B=0009 D=0000 H=0009 S=6FD0 P=90E0 DCR A *90E1 #T ----I A=08 B=0009 D=0000 H=0009 S=6FD0 P=90E1 STA 955B (And again.) *90E4 #T ----I A=08 B=0009 D=0000 H=0009 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0011 D=0000 H=0011 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=11 B=0011 D=0000 H=0011 S=6FD0 P=90E0 DCR A *90E1 #T ----I A=10 B=0011 D=0000 H=0011 S=6FD0 P=90E1 STA 955B (Again. Is it always just decremented?) *90E4 #T ----I A=10 B=0011 D=0000 H=0011 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0019 D=0000 H=0019 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=19 B=0019 D=0000 H=0019 S=6FD0 P=90E0 DCR A *90E1 #T ---EI A=18 B=0019 D=0000 H=0019 S=6FD0 P=90E1 STA 955B *90E4 #T ---EI A=18 B=0019 D=0000 H=0019 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0003 D=0000 H=0003 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=03 B=0003 D=0000 H=0003 S=6FD0 P=90E0 DCR A *90E1 #T ----I A=02 B=0003 D=0000 H=0003 S=6FD0 P=90E1 STA 955B *90E4 #T ----I A=02 B=0003 D=0000 H=0003 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=000B D=0000 H=000B S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=0B B=000B D=0000 H=000B S=6FD0 P=90E0 DCR A *90E1 #T ---EI A=0A B=000B D=0000 H=000B S=6FD0 P=90E1 STA 955B *90E4 #G 01 PASS 90DF -Z-EI A=00 B=0013 D=0000 H=0013 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=13 B=0013 D=0000 H=0013 S=6FD0 P=90E0 DCR A *90E1 #T ---EI A=12 B=0013 D=0000 H=0013 S=6FD0 P=90E1 STA 955B *90E4 #T ---EI A=12 B=0013 D=0000 H=0013 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=001B D=0000 H=001B S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=1B B=001B D=0000 H=001B S=6FD0 P=90E0 DCR A *90E1 #T ----I A=1A B=001B D=0000 H=001B S=6FD0 P=90E1 STA 955B *90E4 #T ----I A=1A B=001B D=0000 H=001B S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0005 D=0000 H=0005 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=05 B=0005 D=0000 H=0005 S=6FD0 P=90E0 DCR A *90E1 #T ----I A=04 B=0005 D=0000 H=0005 S=6FD0 P=90E1 STA 955B *90E4 #T ----I A=04 B=0005 D=0000 H=0005 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=000D D=0000 H=000D S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=0D B=000D D=0000 H=000D S=6FD0 P=90E0 DCR A *90E1 #T ---EI A=0C B=000D D=0000 H=000D S=6FD0 P=90E1 STA 955B *90E4 #T ---EI A=0C B=000D D=0000 H=000D S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0015 D=0000 H=0015 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=15 B=0015 D=0000 H=0015 S=6FD0 P=90E0 DCR A *90E1 #T ---EI A=14 B=0015 D=0000 H=0015 S=6FD0 P=90E1 STA 955B *90E4 #T ---EI A=14 B=0015 D=0000 H=0015 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=001D D=0000 H=001D S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=1D B=001D D=0000 H=001D S=6FD0 P=90E0 DCR A *90E1 #T ----I A=1C B=001D D=0000 H=001D S=6FD0 P=90E1 STA 955B *90E4 #T ----I A=1C B=001D D=0000 H=001D S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0007 D=0000 H=0007 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=07 B=0007 D=0000 H=0007 S=6FD0 P=90E0 DCR A *90E1 #T ---EI A=06 B=0007 D=0000 H=0007 S=6FD0 P=90E1 STA 955B *90E4 #T ---EI A=06 B=0007 D=0000 H=0007 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=000F D=0000 H=000F S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=0F B=000F D=0000 H=000F S=6FD0 P=90E0 DCR A *90E1 #T ----I A=0E B=000F D=0000 H=000F S=6FD0 P=90E1 STA 955B *90E4 #T ----I A=0E B=000F D=0000 H=000F S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0017 D=0000 H=0017 S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=17 B=0017 D=0000 H=0017 S=6FD0 P=90E0 DCR A *90E1 #T ----I A=16 B=0017 D=0000 H=0017 S=6FD0 P=90E1 STA 955B *90E4 #T ----I A=16 B=0017 D=0000 H=0017 S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=001F D=0000 H=001F S=6FD0 P=90DF MOV A,C *90E0 #T -Z-EI A=1F B=001F D=0000 H=001F S=6FD0 P=90E0 DCR A *90E1 #T ---EI A=1E B=001F D=0000 H=001F S=6FD0 P=90E1 STA 955B *90E4 #T ---EI A=1E B=001F D=0000 H=001F S=6FD0 P=90E4 RET *7853 #G 01 PASS 90DF -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD2 P=90DF MOV A,C *90E0 #T -Z-EI A=01 B=0001 D=0000 H=0001 S=6FD2 P=90E0 DCR A *90E1 #T -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD2 P=90E1 STA 955B *90E4 #T -Z-EI A=00 B=0001 D=0000 H=0001 S=6FD2 P=90E4 RET *7853 # =======================================================================
Apparently, yes. It's just a simple decrement. Let's look at the same function in the modular BIOS.
No decrement, so adding one in for testing. For now, it's in the setsec function in the "invariant" BIOSKRNL code. Once I get this running, I'll remove it from there and put it in the FDC3 module.
Running the modified code:
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A893 (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP A901 (home) 8E1B JMP A8D2 (seldsk) 8E1E JMP A904 (settrk) 8E21 JMP A90A (setsec) 8E24 JMP A911 (setdma) 8E27 JMP A928 (read) 8E2A JMP A93E (write) 8E2D JMP 8F0D (listst) 8E30 JMP A91D (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9104 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP A95F (multio) 8E48 JMP A963 (flush) 8E4B JMP 9282 (move) 8E4E JMP 9094 (time) 8E51 JMP 9020 (selmem) 8E54 JMP A919 (setbnk) 8E57 JMP 9281 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) #PA904 (passpoint at settrk #PA90A setsec #PA928 read #PA91D and sectrn) #G8E00 CP/M Plus v3.0hd 01 PASS A904 (settrk: BC is track number) -Z-E- A=00 B=0000 D=00C0 H=972E S=6FE0 P=A904 MOV L,C -Z-E- A=00 B=0000 D=00C0 H=9700 S=6FE0 P=A905 MOV H,B -Z-E- A=00 B=0000 D=00C0 H=0000 S=6FE0 P=A906 SHLD A983 (@TRK = 0000) -Z-E- A=00 B=0000 D=00C0 H=0000 S=6FE0 P=A909 RET *774F #G 01 PASS A904 (settrk) -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A905 MOV H,B -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A906 SHLD A983 (@TRK = 0002) -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A909 RET *7827 #G 01 PASS A91D (sectrn: BC is BDOS sector) -Z-EI A=00 B=0000 D=930F H=0000 S=6FD0 P=A91D MOV L,C -Z-EI A=00 B=0000 D=930F H=0000 S=6FD0 P=A91E MOV H,B -Z-EI A=00 B=0000 D=930F H=0000 S=6FD0 P=A91F MOV A,D -Z-EI A=93 B=0000 D=930F H=0000 S=6FD0 P=A920 ORA E --ME- A=9F B=0000 D=930F H=0000 S=6FD0 P=A921 RZ --ME- A=9F B=0000 D=930F H=0000 S=6FD0 P=A922 XCHG --ME- A=9F B=0000 D=0000 H=930F S=6FD0 P=A923 DAD B --ME- A=9F B=0000 D=0000 H=930F S=6FD0 P=A924 MOV L,M --ME- A=9F B=0000 D=0000 H=9301 S=6FD0 P=A925 MVI H,00 --ME- A=9F B=0000 D=0000 H=0001 S=6FD0 P=A927 RET (0001 HL is 1-indexed physical sector) *784B #G 01 PASS A90A (setsec: BC is physical sector) --ME- A=9F B=0001 D=0000 H=0001 S=6FD0 P=A90A MOV L,C --ME- A=9F B=0001 D=0000 H=0001 S=6FD0 P=A90B MOV H,B --ME- A=9F B=0001 D=0000 H=0001 S=6FD0 P=A90C DCX H --ME- A=9F B=0001 D=0000 H=0000 S=6FD0 P=A90D SHLD A985 (@SECT = 0000) --ME- A=9F B=0001 D=0000 H=0000 S=6FD0 P=A910 RET *7853 #G 01 PASS A928 (read: HL = @DMA) ----I A=01 B=9601 D=0000 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 00 00 .... (track 0002, sector 0000) #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 96BD: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 96DD: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 96FD: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 971D: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 00 00 00 00 00 00 00 00 00 00 00 00 ...~............ 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D (sectrn: BC is BDOS sector) -Z-EI A=00 B=0001 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A (setsec: BC is physical sector) --ME- A=9F B=0009 D=0001 H=0009 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 (read: HL = @DMA) ----I A=01 B=9601 D=0001 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 (@TRK, @SECT) A983: 02 00 08 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 44 55 4D 50 20 20 20 20 43 4F 4D 00 00 00 03 .DUMP COM.... 96BD: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 58 53 55 42 20 20 20 20 43 4F 4D 00 00 00 06 .XSUB COM.... 96DD: 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 46 4F 52 4D 41 54 20 20 43 4F 4D 00 00 00 0E .FORMAT COM.... 96FD: 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 4C 53 20 20 20 20 20 20 43 4F 4D 00 00 00 18 .LS COM.... 971D: 13 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF F8 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 00 00 00 00 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0002 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0011 D=0002 H=0011 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0002 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 10 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 53 55 42 4D 49 54 20 20 43 4F 4D 00 00 00 11 .SUBMIT COM.... 96BD: 15 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 4C 4F 41 44 20 20 20 20 43 4F 4D 00 00 00 10 .LOAD COM.... 96DD: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 53 55 52 56 45 59 20 20 43 4F 4D 00 00 00 09 .SURVEY COM.... 96FD: 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 56 49 45 57 20 20 20 20 43 4F 4D 00 00 00 03 .VIEW COM.... 971D: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF FF C0 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 00 00 00 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0003 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0019 D=0003 H=0019 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0003 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 18 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 4D 38 30 20 20 20 20 20 43 4F 4D 00 00 00 80 .M80 COM.... 96BD: 1A 1B 1C 1D 1E 1F 20 21 00 00 00 00 00 00 00 00 ...... !........ 96CD: 00 4D 38 30 20 20 20 20 20 43 4F 4D 01 00 00 1D .M80 COM.... 96DD: 22 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "#.............. 96ED: 00 4D 41 43 20 20 20 20 20 43 4F 4D 00 00 00 5C .MAC COM...\ 96FD: 24 25 26 27 28 29 00 00 00 00 00 00 00 00 00 00 $%&'().......... 970D: 00 4D 42 41 53 49 43 20 20 43 4F 4D 00 00 00 80 .MBASIC COM.... 971D: 2A 2B 2C 2D 2E 2F 30 31 00 00 00 00 00 00 00 00 *+,-./01........ 972D: FF FF FF FF FF FF C0 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 1E 00 00 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0004 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0003 D=0004 H=0003 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0004 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 02 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 4D 42 41 53 49 43 20 20 43 4F 4D 01 00 00 3E .MBASIC COM...> 96BD: 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 2345............ 96CD: 00 50 49 50 20 20 20 20 20 43 4F 4D 00 00 00 3A .PIP COM...: 96DD: 36 37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 6789............ 96ED: 00 53 54 41 54 20 20 20 20 43 4F 4D 00 00 00 2A .STAT COM...* 96FD: 3A 3B 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 :;<............. 970D: 00 44 44 54 20 20 20 20 20 43 4F 4D 00 00 00 26 .DDT COM...& 971D: 3D 3E 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 =>?............. 972D: FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 1E 16 00 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0005 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=000B D=0005 H=000B S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0005 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 0A 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 50 43 50 55 54 20 20 20 43 4F 4D 00 00 00 08 .PCPUT COM.... 96BD: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... 96CD: 00 4E 53 57 50 20 20 20 20 43 4F 4D 00 00 00 58 .NSWP COM...X 96DD: 41 42 43 44 45 46 00 00 00 00 00 00 00 00 00 00 ABCDEF.......... 96ED: 00 53 59 53 47 45 4E 20 20 43 4F 4D 00 00 00 09 .SYSGEN COM.... 96FD: 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 G............... 970D: 00 50 43 47 45 54 20 20 20 43 4F 4D 00 00 00 07 .PCGET COM.... 971D: 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 H............... 972D: FF FF FF FF FF FF FF FF FF 80 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 1E 16 CE 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0006 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0013 D=0006 H=0013 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0006 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 12 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 43 52 43 20 20 20 20 20 43 4F 4D 00 00 00 11 .CRC COM.... 96BD: 49 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 IJ.............. 96CD: 00 4D 4F 56 43 50 4D 20 20 43 4F 4D 00 00 00 53 .MOVCPM COM...S 96DD: 4B 4C 4D 4E 4F 50 00 00 00 00 00 00 00 00 00 00 KLMNOP.......... 96ED: 00 53 49 44 20 20 20 20 20 43 4F 4D 00 00 00 3E .SID COM...> 96FD: 51 52 53 54 00 00 00 00 00 00 00 00 00 00 00 00 QRST............ 970D: 00 43 50 4D 4C 44 52 20 20 43 4F 4D 00 00 00 48 .CPMLDR COM...H 971D: 55 56 57 58 59 00 00 00 00 00 00 00 00 00 00 00 UVWXY........... 972D: FF FF FF FF FF FF FF FF FF FF FF C0 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0007 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=001B D=0007 H=001B S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0007 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 1A 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 43 50 4D 33 4D 4F 44 31 53 59 53 00 00 00 78 .CPM3MOD1SYS...x 96BD: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 96CD: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 96DD: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 96ED: 00 43 50 4D 33 4D 4F 44 32 53 59 53 00 00 00 78 .CPM3MOD2SYS...x 96FD: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 970D: 00 43 50 4D 33 44 55 47 20 53 59 53 00 00 00 74 .CPM3DUG SYS...t 971D: 6C 6D 6E 6F 70 71 72 73 00 00 00 00 00 00 00 00 lmnopqrs........ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 00 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 00 00 00 00 00 ...~e.....n..... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0008 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0005 D=0008 H=0005 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0008 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 04 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 96BD: 74 75 76 77 78 79 7A 7B 00 00 00 00 00 00 00 00 tuvwxyz{........ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=0009 D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=000D D=0009 H=000D S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0009 H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 0C 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=000A D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0015 D=000A H=0015 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=000A H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 14 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=000B D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=001D D=000B H=001D S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=000B H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 1C 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=000C D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0007 D=000C H=0007 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=000C H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 06 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=000D D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=000F D=000D H=000F S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=000D H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 0E 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=000E D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0017 D=000E H=0017 S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=000E H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 16 00 .... #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A904 MOV L,C *A905 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A91D -Z-EI A=00 B=000F D=930F H=0000 S=6FD0 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=001F D=000F H=001F S=6FD0 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=000F H=96AD S=6FD2 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 1E 00 .... #G 01 PASS A904 -Z-EI A=0F B=0000 D=8BCD H=8BE4 S=6FE2 P=A904 MOV L,C *A905 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS A904 -Z-EI A=00 B=0002 D=0000 H=0002 S=6FCA P=A904 MOV L,C *A905 #G 01 PASS A91D -Z-EI A=00 B=0000 D=930F H=0000 S=6FD2 P=A91D MOV L,C *A91E #G 01 PASS A90A --ME- A=9F B=0001 D=0000 H=0001 S=6FD2 P=A90A MOV L,C *A90B #G 01 PASS A928 ----I A=01 B=9601 D=0000 H=96AD S=6FD4 P=A928 LHLD A981 *A92B #DA983,A986 A983: 02 00 00 00 .... # ...Starting the second pass. =======================================================================
Let's monitor each read function, placing a breakpoint at the final RET instruction so we can see the registers there and also check @TRK, @SECT and @DMA.
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #LA928 (BIOSKRNL read entry point) A928 LHLD A981 (@ADRV) A92B MVI H,00 A92D DAD H A92E LXI D,9288 (@DTBL) A931 DAD D A932 MOV A,M A933 INX H A934 MOV H,M A935 MOV L,A A936 PUSH H A937 LXI D,FFF8 A93A DAD D A93B JMP A951 (rw$common) ~~~~ #LA951 A951 MOV A,M A952 INX H A953 MOV H,M A954 MOV L,A A955 POP D A956 DCX D A957 DCX D A958 LDAX D A959 STA A982 (@RDRV) A95C INX D A95D INX D A95E PCHL ~~~~ #G8E00,A95E (run to the call to fdRead) *A95E #X C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=A95E PCHL (9331 is the fdRead entry point) #L9331 9331 CALL 944E (call ckFlush) 9334 EI 9335 CALL 93E7 (call readTrk) 9338 EI 9339 JNZ 933F (jnz over call to movRead) 933C CALL 9352 (call movRead) 933F MVI A,00 9341 RZ (return with HL=@DMA+seclen, A=00 and Z=1 if everything is OK) 9342 INR A 9343 RET (otherwise, return with A!=0 and Z=0) ~~~~ #L9352 (movRead) 9352 CALL 93D7 (call altSkew) 9355 CALL 95A1 (call dSecAdr) 9358 MOV A,M 9359 ORA A 935A RNZ 935B LXI D,0008 935E LDA A983 (lda @TRK) 9361 CPI 06 9363 JNC 9369 9366 LXI D,0004 9369 DAD D 936A XCHG 936B LHLD A987 (lda @DMA) 936E MVI B,80 9370 LDAX D (mrLoop - iteration to copy sector) 9371 MOV M,A 9372 INX H 9373 INX D 9374 DCR B 9375 JNZ 9370 (loop back to mrLoop to copy data) 9378 RET =======================================================================
So, upon entry to fdRead, we should expect to see @TRK, @SECT and @DMA. The TRK/SECT data is in memory locations A983-A986, and those values should be the now familiar sequence. The DMA address is in locations A987 and A988 and will be (96AD) while reading the directory. On exit, we should expect to see HL==@DMA+80h (972D during directory transfers), A==00, Z==1 and 128 bytes of sector data starting at @DMA. The HL register will be 96AD if reading the directory but will be 0100 if reading the first sector of the CCP.COM file. Every subsequent sector read will increase by 128 (80h), so 0180, then 0200, then 0280 and so on until the entire file is read.
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P9331 (entry to fdRead) #P9341 (return on success) #P9343 (return on error) #G8E00 CP/M Plus v3.0hd 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 00 00 AD 96 ...... #G A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #P9331 #P9341 #P9343 #G8E00 CP/M Plus v3.0hd 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 00 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0000 D=97F7 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 96BD: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 96DD: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 96FD: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 971D: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973D: .............. 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 08 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0010 D=9C3F H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 44 55 4D 50 20 20 20 20 43 4F 4D 00 00 00 03 .DUMP COM.... 96BD: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 58 53 55 42 20 20 20 20 43 4F 4D 00 00 00 06 .XSUB COM.... 96DD: 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 46 4F 52 4D 41 54 20 20 43 4F 4D 00 00 00 0E .FORMAT COM.... 96FD: 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 4C 53 20 20 20 20 20 20 43 4F 4D 00 00 00 18 .LS COM.... 971D: 13 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 00 00 00 00 00 00 00 00 00 00 00 00 ...~............ 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,DA988 A983: 02 00 10 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0020 D=A087 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 53 55 42 4D 49 54 20 20 43 4F 4D 00 00 00 11 .SUBMIT COM.... 96BD: 15 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 4C 4F 41 44 20 20 20 20 43 4F 4D 00 00 00 10 .LOAD COM.... 96DD: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 53 55 52 56 45 59 20 20 43 4F 4D 00 00 00 09 .SURVEY COM.... 96FD: 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 56 49 45 57 20 20 20 20 43 4F 4D 00 00 00 03 .VIEW COM.... 971D: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF F8 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 00 00 00 00 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 18 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0030 D=A4CF H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 4D 38 30 20 20 20 20 20 43 4F 4D 00 00 00 80 .M80 COM.... 96BD: 1A 1B 1C 1D 1E 1F 20 21 00 00 00 00 00 00 00 00 ...... !........ 96CD: 00 4D 38 30 20 20 20 20 20 43 4F 4D 01 00 00 1D .M80 COM.... 96DD: 22 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "#.............. 96ED: 00 4D 41 43 20 20 20 20 20 43 4F 4D 00 00 00 5C .MAC COM...\ 96FD: 24 25 26 27 28 29 00 00 00 00 00 00 00 00 00 00 $%&'().......... 970D: 00 4D 42 41 53 49 43 20 20 43 4F 4D 00 00 00 80 .MBASIC COM.... 971D: 2A 2B 2C 2D 2E 2F 30 31 00 00 00 00 00 00 00 00 *+,-./01........ 972D: FF FF FF C0 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 00 00 00 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 02 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0004 D=9909 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 4D 42 41 53 49 43 20 20 43 4F 4D 01 00 00 3E .MBASIC COM...> 96BD: 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 2345............ 96CD: 00 50 49 50 20 20 20 20 20 43 4F 4D 00 00 00 3A .PIP COM...: 96DD: 36 37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 6789............ 96ED: 00 53 54 41 54 20 20 20 20 43 4F 4D 00 00 00 2A .STAT COM...* 96FD: 3A 3B 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 :;<............. 970D: 00 44 44 54 20 20 20 20 20 43 4F 4D 00 00 00 26 .DDT COM...& 971D: 3D 3E 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 =>?............. 972D: FF FF FF FF FF FF C0 00 00 00 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 1E 00 00 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 0A 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0014 D=9D51 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 50 43 50 55 54 20 20 20 43 4F 4D 00 00 00 08 .PCPUT COM.... 96BD: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... 96CD: 00 4E 53 57 50 20 20 20 20 43 4F 4D 00 00 00 58 .NSWP COM...X 96DD: 41 42 43 44 45 46 00 00 00 00 00 00 00 00 00 00 ABCDEF.......... 96ED: 00 53 59 53 47 45 4E 20 20 43 4F 4D 00 00 00 09 .SYSGEN COM.... 96FD: 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 G............... 970D: 00 50 43 47 45 54 20 20 20 43 4F 4D 00 00 00 07 .PCGET COM.... 971D: 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 H............... 972D: FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 0~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 12 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0024 D=A199 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 43 52 43 20 20 20 20 20 43 4F 4D 00 00 00 11 .CRC COM.... 96BD: 49 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 IJ.............. 96CD: 00 4D 4F 56 43 50 4D 20 20 43 4F 4D 00 00 00 53 .MOVCPM COM...S 96DD: 4B 4C 4D 4E 4F 50 00 00 00 00 00 00 00 00 00 00 KLMNOP.......... 96ED: 00 53 49 44 20 20 20 20 20 43 4F 4D 00 00 00 3E .SID COM...> 96FD: 51 52 53 54 00 00 00 00 00 00 00 00 00 00 00 00 QRST............ 970D: 00 43 50 4D 4C 44 52 20 20 43 4F 4D 00 00 00 48 .CPMLDR COM...H 971D: 55 56 57 58 59 00 00 00 00 00 00 00 00 00 00 00 UVWXY........... 972D: FF FF FF FF FF FF FF FF FF 80 00 00 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 1E 16 CE 00 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 1A 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0034 D=A5E1 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 43 50 4D 33 4D 4F 44 31 53 59 53 00 00 00 78 .CPM3MOD1SYS...x 96BD: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 96CD: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 96DD: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 96ED: 00 43 50 4D 33 4D 4F 44 32 53 59 53 00 00 00 78 .CPM3MOD2SYS...x 96FD: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 970D: 00 43 50 4D 33 44 55 47 20 53 59 53 00 00 00 74 .CPM3DUG SYS...t 971D: 6C 6D 6E 6F 70 71 72 73 00 00 00 00 00 00 00 00 lmnopqrs........ 972D: FF FF FF FF FF FF FF FF FF FF FF C0 00 00 00 00 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 00 00 00 00 00 00 ...~e........... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 04 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0008 D=9A1B H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: 00 43 50 4D 33 20 20 20 20 53 59 53 00 00 00 78 .CPM3 SYS...x 96BD: 74 75 76 77 78 79 7A 7B 00 00 00 00 00 00 00 00 tuvwxyz{........ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 00 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 00 00 00 00 00 ...~e.....n..... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 0C 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0018 D=9E63 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 14 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0028 D=A2AB H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 1C 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0038 D=A6F3 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 06 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=000C D=9B2D H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 0E 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=001C D=9F75 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 16 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=002C D=A3BD H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD2 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 1E 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=003C D=A805 H=972D S=6FD2 P=9341 RZ *7767 #D96AD 96AD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96BD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96CD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96DD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96ED: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 96FD: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 970D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 971D: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 00 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0000 D=97F7 H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 96BD: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 96DD: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 96FD: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 971D: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 08 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0010 D=9C3F H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 44 55 4D 50 20 20 20 20 43 4F 4D 00 00 00 03 .DUMP COM.... 96BD: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 58 53 55 42 20 20 20 20 43 4F 4D 00 00 00 06 .XSUB COM.... 96DD: 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 46 4F 52 4D 41 54 20 20 43 4F 4D 00 00 00 0E .FORMAT COM.... 96FD: 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 4C 53 20 20 20 20 20 20 43 4F 4D 00 00 00 18 .LS COM.... 971D: 13 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 10 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0020 D=A087 H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 53 55 42 4D 49 54 20 20 43 4F 4D 00 00 00 11 .SUBMIT COM.... 96BD: 15 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96CD: 00 4C 4F 41 44 20 20 20 20 43 4F 4D 00 00 00 10 .LOAD COM.... 96DD: 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96ED: 00 53 55 52 56 45 59 20 20 43 4F 4D 00 00 00 09 .SURVEY COM.... 96FD: 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970D: 00 56 49 45 57 20 20 20 20 43 4F 4D 00 00 00 03 .VIEW COM.... 971D: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 18 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0030 D=A4CF H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 4D 38 30 20 20 20 20 20 43 4F 4D 00 00 00 80 .M80 COM.... 96BD: 1A 1B 1C 1D 1E 1F 20 21 00 00 00 00 00 00 00 00 ...... !........ 96CD: 00 4D 38 30 20 20 20 20 20 43 4F 4D 01 00 00 1D .M80 COM.... 96DD: 22 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "#.............. 96ED: 00 4D 41 43 20 20 20 20 20 43 4F 4D 00 00 00 5C .MAC COM...\ 96FD: 24 25 26 27 28 29 00 00 00 00 00 00 00 00 00 00 $%&'().......... 970D: 00 4D 42 41 53 49 43 20 20 43 4F 4D 00 00 00 80 .MBASIC COM.... 971D: 2A 2B 2C 2D 2E 2F 30 31 00 00 00 00 00 00 00 00 *+,-./01........ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 02 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0004 D=9909 H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 4D 42 41 53 49 43 20 20 43 4F 4D 01 00 00 3E .MBASIC COM...> 96BD: 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 2345............ 96CD: 00 50 49 50 20 20 20 20 20 43 4F 4D 00 00 00 3A .PIP COM...: 96DD: 36 37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 6789............ 96ED: 00 53 54 41 54 20 20 20 20 43 4F 4D 00 00 00 2A .STAT COM...* 96FD: 3A 3B 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 :;<............. 970D: 00 44 44 54 20 20 20 20 20 43 4F 4D 00 00 00 26 .DDT COM...& 971D: 3D 3E 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 =>?............. 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 0A 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0014 D=9D51 H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 50 43 50 55 54 20 20 20 43 4F 4D 00 00 00 08 .PCPUT COM.... 96BD: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... 96CD: 00 4E 53 57 50 20 20 20 20 43 4F 4D 00 00 00 58 .NSWP COM...X 96DD: 41 42 43 44 45 46 00 00 00 00 00 00 00 00 00 00 ABCDEF.......... 96ED: 00 53 59 53 47 45 4E 20 20 43 4F 4D 00 00 00 09 .SYSGEN COM.... 96FD: 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 G............... 970D: 00 50 43 47 45 54 20 20 20 43 4F 4D 00 00 00 07 .PCGET COM.... 971D: 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 H............... 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 12 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0024 D=A199 H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 43 52 43 20 20 20 20 20 43 4F 4D 00 00 00 11 .CRC COM.... 96BD: 49 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 IJ.............. 96CD: 00 4D 4F 56 43 50 4D 20 20 43 4F 4D 00 00 00 53 .MOVCPM COM...S 96DD: 4B 4C 4D 4E 4F 50 00 00 00 00 00 00 00 00 00 00 KLMNOP.......... 96ED: 00 53 49 44 20 20 20 20 20 43 4F 4D 00 00 00 3E .SID COM...> 96FD: 51 52 53 54 00 00 00 00 00 00 00 00 00 00 00 00 QRST............ 970D: 00 43 50 4D 4C 44 52 20 20 43 4F 4D 00 00 00 48 .CPMLDR COM...H 971D: 55 56 57 58 59 00 00 00 00 00 00 00 00 00 00 00 UVWXY........... 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C---I A=00 B=9601 D=92B2 H=9331 S=6FD4 P=9331 CALL 944E *944E #DA983,A988 A983: 02 00 1A 00 AD 96 ...... #G 01 PASS 9341 -Z-EI A=00 B=0034 D=A5E1 H=972D S=6FD4 P=9341 RZ *7767 #D96AD 96AD: 00 43 50 4D 33 4D 4F 44 31 53 59 53 00 00 00 78 .CPM3MOD1SYS...x 96BD: 5A 5B 5C 5D 5E 5F 60 61 00 00 00 00 00 00 00 00 Z[\]^_`a........ 96CD: 00 43 43 50 20 20 20 20 20 43 4F 4D 00 00 00 19 .CCP COM.... 96DD: 62 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc.............. 96ED: 00 43 50 4D 33 4D 4F 44 32 53 59 53 00 00 00 78 .CPM3MOD2SYS...x 96FD: 64 65 66 67 68 69 6A 6B 00 00 00 00 00 00 00 00 defghijk........ 970D: 00 43 50 4D 33 44 55 47 20 53 59 53 00 00 00 74 .CPM3DUG SYS...t 971D: 6C 6D 6E 6F 70 71 72 73 00 00 00 00 00 00 00 00 lmnopqrs........ 972D: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 ................ 973D: 00 00 00 7E 65 11 1E 16 CE D5 6E 66 00 00 00 00 ...~e.....nf.... 974D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G BIOS ERR ON A: NO CCP.COM FILE ======================================================================= === This is odd. On the second pass, when the sector containing === === the CCP.COM directory is read, the code flow presents the === === warning. Might single step through the flow after the fdRead === === function next time to see where that goes. In the meantime, === === after pressing a character, the current code flow continues. === ======================================================================= 01 PASS 9331 C-ME- A=00 B=0080 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 00 00 80 00 3..... #G 01 PASS 9341 -Z-EI A=00 B=0000 D=97FB H=0100 S=6FE6 P=9341 RZ *7767 #D0000 0000: C3 03 8E F3 00 C3 06 6F 08 E6 08 C2 07 00 3E 04 .......o......>. 0010: D3 09 C3 20 00 DB 08 E6 02 C2 15 00 3E 02 D3 09 ... ........>... 0020: DB 08 E6 40 C2 15 00 01 00 01 21 80 DD CD 48 00 ...@......!...H. 0030: DB 08 E6 02 C2 30 00 3E C3 86 D2 01 01 01 21 80 .....0.>......!. 0040: ED CD 48 00 FB C3 00 F5 C5 E5 7C FE DF DA 56 00 ..H.......|...V. 0050: CD 72 00 C2 00 00 E1 11 00 01 19 00 00 24 42 20 .r...........$B 0060: 20 20 20 20 20 20 20 20 00 00 00 00 00 20 20 20 ..... 0070: 20 20 20 20 20 20 20 20 00 00 00 00 00 D1 C0 21 .......! 0080: C3 1A 04 00 00 00 C3 1B 01 C3 06 00 07 00 00 00 ................ 0090: 4C 4F 41 44 45 52 20 20 FF 00 00 79 FE 3B C2 09 LOADER ...y.;.. 00A0: 01 C1 C5 21 00 00 39 31 BE 03 22 9A 03 C5 EB 22 ...!..91.."...." 00B0: 98 03 7C B5 F5 CC 00 02 F1 C4 30 02 D1 21 00 01 ..|.......0..!.. #G 01 PASS 9331 C-ME- A=00 B=0100 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 08 00 00 01 3..... #G 01 PASS 9341 -Z-EI A=00 B=0010 D=9C43 H=0180 S=6FE6 P=9341 RZ *7767 #D0100 0100: 00 00 23 4E 23 46 3A 8F 03 B7 CA 92 01 23 34 CA ..#N#F:......#4. 0110: 9D 01 D5 CD 0F 03 E1 CD CA 02 CD D0 01 E1 11 10 ................ 0120: 00 19 E5 5E 23 56 7B B2 C2 82 01 CD 03 01 3A 00 ...^#V{.......:. 0130: 02 FE C9 C2 BF 01 2A 8D 03 2E B3 7E F6 02 77 2A ......*....~..w* 0140: 01 01 44 4D 21 00 02 11 00 01 CD 26 03 C3 5F 01 ..DM!......&.._. 0150: 2A 06 00 2E 00 01 06 00 CD 26 03 1E 18 12 1E 0D *........&...... 0160: 12 1B 3E 07 12 6B 1E 0B 73 23 72 EB 72 2B 36 06 ..>..k..s#r.r+6. 0170: 2E 06 22 06 00 22 94 03 11 92 03 0E 31 C3 05 00 ..".."......1... 0180: D5 E5 CD 8F 01 CD 95 01 E1 D1 25 C2 7A 01 C9 0E ..........%.z... 0190: 1A CD 8D 02 C9 0E 14 11 AB 01 CD 8D 02 B7 11 FA ................ 01A0: 01 C8 0E 09 CD 8D 02 F3 76 FF C9 00 43 50 4D 33 ........v...CPM3 01B0: 20 20 20 20 53 59 53 00 00 00 78 74 75 76 77 78 SYS...xtuvwx #G 01 PASS 9331 C-ME- A=00 B=0180 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 10 00 80 01 3..... #G 01 PASS 9341 -Z-EI A=00 B=0020 D=A08B H=0200 S=6FE6 P=9341 RZ *7767 #D0180 0180: 2A 06 00 44 60 2E 18 34 35 C0 2E 0B 46 2E 0E 7E *..D`..45...F..~ 0190: B7 CA 04 02 2E 0C 5E 23 56 78 12 1B 3E 06 12 13 ......^#Vx..>... 01A0: 60 2E 0C 73 23 72 7A B7 C5 CC F0 01 C1 C3 04 02 `..s#rz......... 01B0: E5 11 90 03 CD FB 01 EB E1 E5 01 20 00 09 36 00 ........... ..6. 01C0: 23 4E 23 66 69 25 24 CA 67 01 E5 D5 E5 CD 31 03 #N#fi%$.g.....1. 01D0: E1 F5 1E 80 3A 07 00 3D 94 DA FA 02 3C FE 40 D2 ....:..=....<.@. 01E0: 76 02 07 5F 7D B7 CA 76 02 06 02 3D FA 70 02 05 v.._}..v...=.p.. 01F0: 7B 90 CA FA 02 5F D5 E5 CD 33 03 E1 E5 CD 3B 03 {...._...3....;. 0200: 44 52 20 65 72 72 6F 72 3A 20 20 66 61 69 6C 65 DR error: faile 0210: 64 20 74 6F 20 72 65 61 64 20 43 50 4D 33 2E 53 d to read CPM3.S 0220: 59 53 0D 0A 24 0D 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A YS..$........... 0230: 0A 0A 0A 0A 0A 0A 0A #G 01 PASS 9331 C-ME- A=00 B=0200 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 18 00 00 02 3..... #G 01 PASS 9341 -Z-EI A=00 B=0030 D=A4D3 H=0280 S=6FE6 P=9341 RZ *7767 #D0200 0200: E1 D1 F5 7B 3C 1F 84 67 22 96 03 F1 CA 54 02 C1 ...{<..g"....T.. 0210: 3D 58 CD 33 03 0E 1A D1 F5 CD 05 00 F1 2A 9C 03 =X.3.........*.. 0220: EB C2 6A 01 D1 E1 01 09 00 09 7E E6 7F FE 50 C0 ..j.......~...P. 0230: 23 7E E6 7F FE 52 C0 23 7E E6 7F D6 4C C0 7B B7 #~...R.#~...L.{. 0240: C2 67 01 62 6B 23 4E 23 46 6B 24 D5 C5 CD 26 03 .g.bk#N#Fk$...&. 0250: C1 D1 D5 5A 1D E5 63 1E 00 78 B1 CA F7 02 0B 7B ...Z..c..x.....{ 0260: E6 07 C2 EA 02 E3 7E 23 E3 6F 7D 17 6F D2 F3 02 ......~#.o}.o... 0270: 1A 84 12 13 C3 D9 02 D1 D1 C9 CD 31 03 21 80 00 ...........1.!.. 0280: 01 AA 3B 00 00 00 8E 00 00 00 00 00 00 EB 22 DF ..;...........". 0290: 09 EB 79 FE 0E DA A5 02 32 E2 09 AF 32 B7 09 3A ..y.....2...2..: 02A0: DE 09 32 BE 09 7B 32 BA 09 21 00 00 22 09 04 22 ..2..{2..!..".." 02B0: E1 09 39 22 40 03 31 92 03 21 4E 09 E5 79 FE 32 ..9"@.1..!N..y.2 #G 01 PASS 9331 C-ME- A=00 B=0280 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 02 00 80 02 3..... #G 01 PASS 9341 -Z-EI A=00 B=0004 D=990D H=0300 S=6FE6 P=9341 RZ *7767 #D0280 0280: CD 3B 03 C2 8F 02 21 FE 00 22 9C 03 C3 8F 02 3A .;....!..".....: 0290: 07 00 3D 0B 90 03 FE 0F DA 77 01 2A 96 03 BC DA ..=......w.*.... 02A0: 77 01 57 1E 00 C9 78 B1 C8 0B 7E 12 13 23 C3 26 w.W...x...~..#.& 02B0: 03 1E 01 2A 8D 03 2E E6 7E 73 C9 EB 0E 1A E5 CD ...*....~s...... 02C0: 05 00 0E 14 2A 98 03 EB CD 05 00 22 9C 03 D1 B7 ....*......".... 02D0: C8 5C C9 0D 0A 43 61 6E 6E 6F 74 20 6C 6F 61 64 .\...Cannot load 02E0: 20 50 72 6F 67 72 61 6D 20 32 32 31 32 38 32 20 Program 221282 02F0: 20 43 4F 50 59 52 20 27 38 32 20 44 52 49 20 00 COPYR '82 DRI . 0300: E8 03 E8 03 3B 09 E8 03 E8 03 E8 03 E8 03 41 09 ....;.........A. 0310: 47 09 E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 G............... 0320: E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 ................ 0330: E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 E8 03 ................ #G 01 PASS 9331 C-ME- A=00 B=0300 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 0A 00 00 03 3..... #G 01 PASS 9341 -Z-EI A=00 B=0014 D=9D55 H=0380 S=6FE6 P=9341 RZ *7767 #D0300 0300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0310: 3C 00 62 FE 00 80 00 00 80 48 41 10 04 12 24 12 <.b......HA...$. 0320: 40 08 00 10 00 88 44 48 00 20 04 80 00 09 00 20 @.....DH. ..... 0330: 00 00 01 20 00 00 10 00 00 11 12 00 00 41 00 10 ... .........A.. 0340: 40 82 08 21 00 22 08 01 10 00 00 00 20 01 00 04 @..!."...... ... 0350: 08 01 02 08 24 12 00 24 40 00 84 00 02 04 00 00 ....$..$@....... 0360: 00 00 00 00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A ................ 0370: 1A 1A 1A 1A 1A 1A 1A 137 05 3D 00 19 0E 00 0E F9 05 19 06 ....7.=......... 0390: 4E 09 3A EE 03 B7 C2 9E 03 C5 CD 0C 0B C1 79 21 N.:...........y! 03A0: DA 09 FE 7F C8 34 FE 20 D0 35 7E B7 C8 79 FE 08 .....4. .5~..y.. 03B0: C2 B5 03 35 C9 FE 0A C0 36 00 C9 79 FE 09 C2 92 ...5....6..y.... #G 01 PASS 9331 C-ME- A=00 B=0380 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 12 00 80 03 3..... #G 01 PASS 9341 -Z-EI A=00 B=0024 D=A19D H=0400 S=6FE6 P=9341 RZ *7767 #D0380 0380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0390: 00 00 00 00 00 00 00 00 00 00 31 2D 0F 21 0C 05 ..........1-.!.. 03A0: E5 11 6A 0D 0E 31 CD 05 00 22 8D 03 2E FA 7E 32 ..j..1..."....~2 03B0: 8F 03 2E 99 7E 32 A0 0D 3A 07 00 96 C2 58 04 01 ....~2..:....X.. 03C0: 94 02 CD 0F 03 63 6B CD CA 02 2A 06 00 6B 0E 06 .....ck...*..k.. 03D0: CD AE 0B 1E 0B CD EB 01 0E 62 CD 05 00 06 B6 CD .........b...... 03E0: FF 0B 3C 0F 0F 0F 0F E6 0F 11 97 0D 12 2E B8 7E ..<............~ 03F0: 3D 13 12 AF 13 12 3E 24 13 12 2E D3 77 2E E6 36 =.....>$....w..6 0400: 63 74 24 50 65 72 6D 2E 24 00 00 01 EF 03 CD CF ct$Perm.$....... 0410: 03 01 FC 03 C3 20 04 01 EF 03 CD CF 03 01 03 04 ..... .......... 0420: CD CF 03 F3 76 7B 95 5F 7A 9C 57 D0 05 C9 7B 85 ....v{._z.W...{. 0430: 5F 7A 8C 57 D0 04 C9 0C 0D C8 29 8F C3 38 04 1A _z.W......)..8.. #G 01 PASS 9331 C-ME- A=00 B=0400 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 1A 00 00 04 3..... #G 01 PASS 9341 -Z-EI A=00 B=0034 D=A5E5 H=0480 S=6FE6 P=9341 RZ *7767 #D0400 0400: 01 23 AF 77 2E CF 36 01 23 77 2E A1 36 31 2E B4 .#.w..6.#w..61.. 0410: 7E E6 20 0E 0D E5 C4 05 00 E1 2E B3 7E E6 02 E5 ~. .........~... 0420: CC 00 02 E1 7E E6 FD 77 E6 40 E5 2E B0 01 70 0D ....~..w.@....p. 0430: 54 1E E0 1A 02 7E C2 BA 04 02 12 03 1E DA 1A C2 T....~.......... 0440: C4 04 3E FF 02 2B 03 7E 02 12 2E EC 03 7E 02 E1 ..>..+.~.....~.. 0450: 7E E6 80 CA E7 04 21 80 00 11 F5 0D 0E 7F 79 12 ~.....!.......y. 0460: 13 CD AE 0B C3 8B 05 2E B5 7E E6 02 C2 06 05 7E .........~.....~ 0470: F6 02 77 32 67 0D 21 FC 04 C3 D9 04 50 52 4F 46 ..w2g.!.....PROF 0480: 09 0E 11 CD 49 04 2A AA 09 7C 21 BD 09 36 FF B7 ....I.*..|!..6.. 0490: CA 95 04 36 00 37 C9 CD 18 0B AF 2A 90 09 77 23 ...6.7.....*..w# 04A0: 77 2A 92 09 77 23 77 23 77 C9 21 C3 09 5E 23 56 w*..w#w#w.!..^#V 04B0: 23 46 C9 CD AA 04 CD 27 0B B7 C8 4F FE 03 DA 17 #F.....' #G 01 PASS 9331 C-ME- A=00 B=0480 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 04 00 80 04 3..... #G 01 PASS 9341 -Z-EI A=00 B=0008 D=9A1F H=0500 S=6FE6 P=9341 RZ *7767 #D0480 0480: 49 4C 45 2E 53 00 CD E4 0B CD 09 0C 21 2B 0F F9 ILE.S.......!+.. 0490: AF 32 99 0D 21 0C 05 E5 CD E4 0B 2B 7E E6 01 CA .2..!......+~... 04A0: 64 05 11 F5 0D CD 7B 09 0E 0F CD F0 09 0E 0B CC d.....{......... 04B0: F0 09 C2 4F 05 21 96 0D 77 2B 77 2B E5 3A 82 0D ...O.!..w+w+.:.. 04C0: 3D 77 0E 21 F4 F0 09 E1 35 0E 13 FC F0 09 B7 F5 =w.!....5....... 04D0: 0E 63 CD F0 09 F1 CA 8B 05 01 01 B3 CD F1 0B 0E .c.............. 04E0: 13 CD F0 09 3A 70 0D B7 C4 13 0C CD 6D 06 3E 3E ....:p......m.>> 04F0: CD 16 09 11 BA B1 CD A7 0B B7 F5 01 80 B4 C4 F1 ................ 0500: E1 E3 2B E3 C3 F0 04 2A A5 09 CD 2E 04 E1 7D 93 ..+....*......}. 0510: 7C 9A 79 98 DA 1E 05 E3 23 E3 E5 C3 07 05 E3 E5 |.y.....#....... 0520: 2A A5 09 CD 25 04 E1 D5 C5 E5 EB 2A B2 09 19 44 *...%......*...D 0530: 4D 22 CE 09 CD 1E 0B D1 2A 90 09 73 23 72 C1 D1 M"......*..s#r.. #G 01 PASS 9331 C-ME- A=00 B=0500 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 0C 00 00 05 3..... #G 01 PASS 9341 -Z-EI A=00 B=0018 D=9E67 H=0580 S=6FE6 P=9341 RZ *7767 #D0500 0500: 0B CD 4E 09 CD EE 0B F1 C4 A8 0A CD DA 0B C2 96 ..N............. 0510: 05 2E C9 7E 2B 77 2E C8 7E 32 9A 0D CD F6 09 C8 ...~+w..~2...... 0520: 11 AC 0D CD 39 0B 3A B6 0D FE 20 C2 04 06 21 AC ....9.:... ...!. 0530: 0D 7E 23 B6 23 7E C2 0A 06 21 37 06 11 AE 0D 3A .~#.#~...!7....: 0540: B0 0D FE 21 D4 BF 0C C2 E8 05 3A A1 0D B7 78 2A ...!......:...x* 0550: 6C 0D 22 9D 0D 21 5A 06 CA 58 08 FE 04 DA 86 07 l."..!Z..X...... 0560: 21 B1 0D C2 E8 05 36 20 01 18 B4 CD DD 0B CA 04 !.....6 ........ 0570: 06 06 08 90 CA F9 05 06 00 C5 CD 7A 08 CD E4 07 ...........z.... 0580: 3E 08 96 4F 3A C0 09 0D CA 90 05 B7 17 C3 87 05 >..O:........... 0590: 80 C9 2A DF 09 11 10 00 19 C9 CD 92 05 09 3A BD ..*...........:. 05A0: 09 B7 CA A8 05 6E 60 C9 09 7E 23 66 6F C9 CD 72 .....n`..~#fo..r 05B0: 05 32 BB 09 4F 06 00 CD 9A 05 22 C3 09 7D B4 C9 .2..O....."..}.. #G 01 PASS 9331 C-ME- A=00 B=0580 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 14 00 80 05 3..... #G 01 PASS 9341 -Z-EI A=00 B=0028 D=A2AF H=0600 S=6FE6 P=9341 RZ *7767 #D0580 0580: F1 CD 7A 08 CD E4 07 C3 3A 0C FE 20 C2 E8 05 CD ..z.....:.. .... 0590: 36 0C 3A AC 0D D6 01 DA 25 06 32 70 0D 06 B0 CD 6.:.....%.2p.... 05A0: F9 0B CD 86 09 3A AD 0D 3D F8 F5 CD 80 09 F1 32 .....:..=......2 05B0: 72 0D 06 AF C3 F9 0B 44 49 52 20 54 59 50 45 20 r......DIR TYPE 05C0: 45 52 41 53 45 20 52 45 4E 41 4D 45 20 44 49 52 ERASE RENAME DIR 05D0: 53 59 53 20 55 53 45 52 20 00 75 06 F4 06 22 07 SYS USER .u...". 05E0: 51 07 7D 06 15 07 3A 5C 00 3D F2 70 06 3A 72 0D Q.}...:\.=.p.:r. 05F0: C6 41 C3 A6 0C 0E 00 11 52 0D C3 82 06 0E 80 11 .A......R....... 0600: F6 05 7E 32 C1 09 EB 7E 32 BF 09 CD E6 05 3A A9 ..~2...~2.....:. 0610: 09 A6 32 C0 09 C9 CD F6 05 0E 01 3A C1 09 81 77 ..2........:...w 0620: EB 3A BF 09 77 C9 0C 0D C8 7C B7 1F 67 7D 1F 6F .:..w....|..g}.o 0630: C3 27 06 0C 0D C8 29 C3 34 06 3A DE 09 C5 4F 21 .'....).4.:...O! #G 01 PASS 9331 C-ME- A=00 B=0600 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 1C 00 00 06 3..... #G 01 PASS 9341 -Z-EI A=00 B=0038 D=A6F7 H=0680 S=6FE6 P=9341 RZ *7767 #D0600 0600: 4E 0D D5 CD 99 06 D1 CA B8 07 7D B8 D4 09 0C 21 N.........}....! 0610: 4D 0D 35 34 C8 35 C3 05 0C C5 CD 78 09 CD D8 0A M.54.5.....x.... 0620: 11 5D 00 1A FE 20 06 0B CC B5 0C CD 36 0C CD C3 .]... ......6... 0630: 09 C1 C8 3A 97 0D 6F 47 04 E5 21 0A 00 19 7E E1 ...:..oG..!...~. 0640: E6 80 B9 CA CE 06 3E 01 32 4D 0D C3 E5 06 05 CC ......>.2M...... 0650: 08 0C 78 BD CC 66 06 3E 3A CD A6 0C CD A4 0C CD ..x..f.>:....... 0660: 8D 0C CD A4 0C C5 E5 CD 66 09 CD C8 09 E1 C1 C2 ........f....... 0670: B9 06 3C C9 21 06 05 E5 CD D8 0A 3E 7F 32 9F 0D ..<.!......>.2.. 0680: 3A B5 09 B7 CA 8F 06 3E 03 CD E8 09 C3 9B 06 CD :......>........ 0690: A1 06 22 8C 09 CD DA 04 CD B3 04 2A DC 09 C3 A7 .."........*.... 06A0: 06 2A 9E 09 CD 72 06 22 8A 09 C9 21 E3 09 7E 23 .*...r."...!..~# 06B0: BE C0 3C C9 21 FF FF 22 E3 09 C9 2A AC 09 EB 2A ..<.!.."...*...* #G 01 PASS 9331 C-ME- A=00 B=0680 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 06 00 80 06 3..... #G 01 PASS 9341 -Z-EI A=00 B=000C D=9B31 H=0700 S=6FE6 P=9341 RZ *7767 #D0680 0680: 0E 0F CD 6C 07 CD 66 09 CD C4 0B C0 FE 1A C8 CD ...l..f......... 0690: 16 09 C3 05 07 11 F3 0C CD AB 07 CD 52 0C C8 C3 ............R... 06A0: 1A 06 CD D8 0A CA 4C 07 CD 9E 07 C2 4C 07 11 14 ......L.....L... 06B0: 0D CD 49 09 2A 9B 0D 0E 20 CD 2A 0C 11 1B 0D CD ..I.*... .*..... 06C0: 41 09 CD 09 0C 7D E6 5F FE 59 C0 B7 0E 13 C3 6C A....}._.Y.....l 06D0: 07 CD D8 0A F5 21 10 00 19 EB D5 E5 0E 10 CD AE .....!.......... 06E0: 0B CD D8 0A E1 D1 CD 92 07 0E 17 F1 F5 C4 36 0C ..............6. ....%... 0700: 05 BE C2 09 07 0D C2 FF 06 79 32 BB 09 3A BD 09 .........y2..:.. 0710: B7 78 C2 16 07 1F C5 E5 6F 26 00 3A A7 09 57 3E .x......o&.:..W> 0720: 07 92 4F CD 26 06 45 3A A9 09 B8 E1 DA FC 06 CD ..O.&.E:........ 0730: E6 05 4E 2F E6 1F A1 B0 C1 C9 2A DF 09 22 E5 09 ..N/......*..".. #G 01 PASS 9331 C-ME- A=00 B=0700 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 0E 00 00 07 3..... #G 01 PASS 9341 -Z-EI A=00 B=001C D=9F79 H=0780 S=6FE6 P=9341 RZ *7767 #D0700 0700: 2A 9D 0D 22 6C 0D CD E4 07 CD 8D 0C 11 0A 0D C3 *.."l........... 0710: BB 07 1A BE C8 B7 C8 34 35 C2 3A 0C 77 C9 06 0B .......45.:.w... 0720: 13 1A FE 3F C8 05 C2 A0 07 05 C9 CD 41 0A C0 CD ...?........A... 0730: 49 09 CD 4E 09 C3 F6 09 11 02 0D CD 05 0C C3 0C I..N............ 0740: 05 00 53 55 42 4D 49 54 20 20 43 4F 4D 1A 06 AB ..SUBMIT COM... 0750: CD F9 0B 21 C1 07 0E 0C CD AE 0B 21 F5 0D 36 20 ...!.......!..6 0760: 23 22 6C 0D 11 B6 0D 21 63 08 CD BF 0C C0 11 AC #"l....!c....... 0770: 0D 1A B7 C0 13 1A 4F C5 0E 00 B7 C2 21 08 01 04 ......O.....!... 0780: 8D 07 1A C5 4E CD E3 06 C1 B7 C2 4A 07 13 23 04 ....N......J..#. 0790: 0D C3 68 07 AF 32 09 04 47 04 C9 3E FF 47 04 C3 ..h..2..G..>.G.. 07A0: E5 03 0E 0F CD 3A 07 C8 CD E6 05 7E F5 CD 58 06 .....:.....~..X. 07B0: EB 2A DF 09 0E 20 CD 49 04 CD F4 06 4F F1 77 06 .*... .I....O.w. #G 01 PASS 9331 C-ME- A=00 B=0780 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 16 00 80 07 3..... #G 01 PASS 9341 -Z-EI A=00 B=002C D=A3C1 H=0800 S=6FE6 P=9341 RZ *7767 #D0780 0780: E7 3A 72 0D 3C 67 2E 01 04 0D 79 E5 F4 FF 0B E1 .:r.:...... 07C0: 0C D1 D5 21 08 00 19 7E E6 80 11 42 0D C4 49 09 ...!...~...B..I. 07D0: CD 09 0C D1 F1 21 70 08 87 CD B0 0C D5 5E 23 56 .....!p......^#V 07E0: EB D1 E9 43 4F 4D 20 53 55 42 20 50 52 4C 20 00 ...COM SUB PRL . 07F0: 89 08 CD 07 89 08 C1 79 12 C9 0F 21 63 08 CD B0 .......y...!c... 0800: E6 05 7E 4F 0C CD E3 06 CA 21 08 3E 1F A1 77 0E ..~O.....!.>..w. 0810: 0F CD 3A 07 CD A8 07 CD FF 05 AF 32 C1 09 C3 E5 ..:........2.... 0820: 03 34 CD F4 06 4F BE D2 2E 08 35 C3 E9 03 CD EC .4...O....5..... 0830: 07 CD BF 07 C3 17 08 CD FF 05 3A C1 09 21 BF 09 ..........:..!.. #G 01 PASS 9331 C-ME- A=00 B=0800 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 1E 00 00 08 3..... #G 01 PASS 9341 -Z-EI A=00 B=003C D=A809 H=0880 S=6FE6 P=9341 RZ *7767 #D0800 0800: 0C 11 B6 0D 0E 03 C3 AE 0B 21 00 01 22 CE 0D 2A .........!.."..* 0810: 9F 0D 25 2E C0 E5 1A 32 50 00 EB 0E 23 CD AE 0B ..%....2P...#... 0820: 21 67 0D 34 2A 6C 0D 2B 11 81 00 EB 22 6C 0D CD !g.4*l.+...."l.. 0830: B7 0B 32 80 00 CD D8 0A 22 51 00 78 32 53 00 11 ..2....."Q.x2S.. 0840: 6C 00 CD DB 0A 22 54 00 78 32 56 00 21 71 0D 7E l...."T.x2V.!q.~ 0850: B7 F4 80 09 3A 70 0D CD 86 09 87 87 87 87 2E DA ....:p.......... 0860: B6 32 04 00 D1 2A 9F 0D AF 6F F9 67 E5 24 E5 32 .2...*...o.g.$.2 0870: 7C 00 06 CF CD F9 0B 2E 90 77 23 77 23 77 23 77 |........w#w#w#w 0880: 09 CD 4D 06 5F D5 CD 53 04 E1 D2 0B 04 2D C8 2A ..M._..S.....-.* 0890: 88 09 4D 44 CD 3A 06 22 88 09 C9 3A BA 09 32 DE ..MD.:."...:..2. 08A0: 09 C9 AF 32 C8 09 C3 D2 08 3E 80 47 3D 4F 2A DF ...2.....>.G=O*. 08B0: 09 11 07 00 EB 19 7E A0 7E A1 77 23 7E A0 32 C8 ......~.~.w#~.2. #G 01 PASS 9331 C-ME- A=00 B=0880 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 01 00 80 08 3..... #G 01 PASS 9341 -Z-EI A=00 B=0022 D=A114 H=0900 S=6FE6 P=9341 RZ *7767 #D0880 0880: 2E B3 7E E6 80 C2 0D 09 2E AC 77 23 77 7E E6 3F ..~.......w#w~.? 0890: 77 0E 3B C3 05 00 FE 0A C2 3B 09 21 98 0D 7E 23 w.;......;.!..~# 08A0: 34 96 C2 39 09 77 23 7E B7 11 24 0D CC 41 09 FE 4..9.w#~..$..A.. 08B0: 03 CA 06 05 1E 0D CD 3C 09 3E 0A 5F 0E 02 C3 05 .......<.>._.... 08C0: 00 CD 49 09 0E 01 C3 05 00 0E 09 C3 05 00 21 F4 ..I...........!. 08D0: 0D 36 E7 EB 0E 0A CD 05 00 21 F5 0D 7E 23 CD B0 .6.......!..~#.. 08E0: 0C 36 00 C3 09 0C CD 6D 09 C8 C3 06 05 0E 0B CD .6.....m........ 08F0: EB 09 C8 0E 01 C3 EB 09 11 80 00 0E 1A C3 05 00 ................ 0900: 21 00 00 22 88 09 AF 32 DE 09 3D 32 C2 09 21 80 !.."...2..=2..!. 0910: 00 22 DC 09 C3 9B 06 CD 9B 08 C3 6F 08 CD A2 08 .".........o.... 0920: CD A2 07 CD 27 09 C9 CD AB 06 C8 CD F6 05 7E 3C ....'.........~< 0930: C2 37 09 1B 1B 1A 77 E1 0E 40 C9 CD A9 08 C3 37 .7....w..@.....7 #G 01 PASS 9331 C-ME- A=00 B=0900 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 09 00 00 09 3..... #G 01 PASS 9341 -Z-EI A=00 B=0032 D=A55C H=0980 S=6FE6 P=9341 RZ *7767 #D0900 0900: 5F 0E 0E C3 05 00 06 E0 C3 F9 0B 01 0F 00 11 AD _............... 0910: 0D 21 20 00 19 36 00 C5 D5 1A A0 3D F4 80 09 11 .! ..6.....=.... 0920: A2 0D CD 7B 09 D1 C1 D5 2A 8D 03 2E E7 70 E5 CD ...{....*....p.. 0930: 05 00 D1 AF 12 3A 72 0D 1E DA 12 E5 CD 78 09 E1 .....:r......x.. 0940: 2C D1 C9 0E 11 C3 CA 09 0E 12 11 5C 00 CD 05 00 ,..........\.... 0950: 3C C8 3D 87 87 87 87 87 21 80 00 CD B0 0C EB AF <.=.....!....... 0960: 3D C9 AF 32 9F 0D 0E 14 11 5C 00 CD 05 00 B7 C9 =..2.....\...... 0970: 11 73 0D C3 EB 09 CD EE 0B EB AF 32 A1 0D 21 F6 .s.........2..!. 0980: 03 F9 2A 09 04 7D 44 C9 01 00 00 6F 61 12 00 00 ..*..}D....oa... 0990: 8D 11 8F 11 00 00 00 00 ED 11 F4 12 E1 12 FE 11 ................ 09A0: FF FF FF FF 00 20 00 04 0F 00 95 00 3F 00 C0 00 ..... ......?... 09B0: 10 00 02 00 00 00 07 00 0E 12 FF 07 00 FF 00 78 ...............x #G 01 PASS 9331 C-ME- A=00 B=0980 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 11 00 80 09 3..... #G 01 PASS 9341 -Z-EI A=00 B=0002 D=9884 H=0A00 S=6FE6 P=9341 RZ *7767 #D0980 0980: 0D CD 44 0A EB FE 3B C8 FE 21 CA 1C 0A FE 3A C2 ..D...;..!....:. 0990: 1D 0A 2E AC 34 34 CA 1C 0A 23 34 C8 13 EB 22 6C ....44...#4..."l 09A0: 0D 7E FE 5B C2 2A 0A 32 A1 0D FE 61 DA 37 0A FE .~.[.*.2...a.7.. 09B0: 7B D2 37 0A D6 20 77 FE 21 CC 59 0A 23 B7 C2 21 {.7.. w.!.Y.#..! 09C0: 0A 2A 6C 0D 22 6C 0D 22 9B 0D 7E B7 C8 FE 20 CA .*l."l."..~... . 09D0: 55 0A FE 09 C0 23 C3 44 0A 5D 54 13 1A FE 21 F5 U....#.D.]T...!. 09E0: E5 CC B7 0B E1 F1 C8 36 00 EB 2A 06 00 25 2E 18 .......6..*..%.. 09F0: 77 E5 23 13 1A 77 FE 21 C2 7D 0A 36 0D B7 C2 72 w.#..w.!.}.6...r 0A00: C3 09 22 CC 09 CD 72 06 22 8A 09 CD 5B 0A F1 F5 .."...r."...[... 0A10: FE 04 D2 1C 0A CD 3F 04 CA 2C 0A AF CD 64 0A 3E ......?..,...d.> 0A20: 02 CD 6C 0A CD 5B 0A CD 49 04 36 00 3A CB 09 3C ..l..[..I.6.:..< 0A30: 11 80 00 21 80 FF 19 3D C2 36 0A EB 2A 8A 09 19 ...!...=.6..*... #G 01 PASS 9331 C-ME- A=00 B=0A00 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 19 00 00 0A 3..... #G 01 PASS 9341 -Z-EI A=00 B=0012 D=9CCC H=0A80 S=6FE6 P=9341 RZ *7767 #D0A00 0A00: 0A 36 0D 23 77 2E 06 36 C3 23 36 09 23 74 23 36 .6.#w..6.#6.#t#6 0A10: C3 2E 0E 77 6F EB CD D0 01 2A 8D 03 2E B1 D1 13 ...wo....*...... 0A20: 73 23 72 2E AE 72 AF C9 11 B1 BA CD A7 0B B7 11 s#r..r.......... 0A30: B1 BC CC A7 0B E5 CD 6D 09 E1 2E B1 C2 CB 0A 5E .......m.......^ 0A40: 23 56 34 35 2B CA CB 0A 1A B7 C0 AF 77 23 77 2E #V45+.......w#w. 0A50: AE 66 2E 0E 35 C3 00 02 11 5C 00 CD 41 0A F5 CD .f..5....\..A... 0A60: E4 0A F1 C9 22 6C 0D 22 9B 0D D5 11 6C 0D 0E 98 ...."l."....l... 0A70: CD 05 00 D1 7C B5 46 23 C2 FE 0A 21 28 0B 7C B5 ....|.F#...!(.|. 0A80: 49 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I............... 0A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G 01 PASS 9331 C-ME- A=00 B=0A80 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 03 00 80 0A 3..... #G 01 PASS 9341 -Z-EI A=00 B=0026 D=A226 H=0B00 S=6FE6 P=9341 RZ *7767 #D0A80 0A80: C2 09 0B 21 28 0B CD 3A 0C 78 FE 2E C2 10 0B 2B ...!(..:.x.....+ 0A90: 22 6C 0D 0E 10 21 D0 0D D5 CD AE 0B 11 A2 0D 0E "l...!.......... 0AA0: 0A CD AE 0B D1 7E 21 00 00 B7 47 CA 38 0B 2A 9B .....~!...G.8.*. 0AB0: 0D 7E FE 3B 23 C2 31 0B C9 D5 AF 12 13 12 13 CD .~.;#.1......... 0AC0: 41 0A 2A 6C 0D D1 D5 06 04 7E FE 3A CA 67 0B B7 A.*l.....~.:.g.. 0AD0: CA 58 0B 05 23 C2 49 0B D1 AF 12 2A 6C 0D 13 1A .X..#.I....*l... 0AE0: F5 CD E4 0A F1 12 C9 2A 6C 0D 7E FE 30 DA 85 0B .......*l.~.0... 0AF0: FE 3A D2 85 0B CD 71 0C D1 D5 1A B7 C2 58 0B 78 .:....q......X.x 0B00: C3 61 0B C3 B9 0B C3 A3 0C C3 8A 0C C3 9D 0C C3 .a.............. 0B10: C7 0C C3 B5 0C C3 AF 0C C3 D5 0D C3 C2 0D C3 DA ................ 0B20: 0D C3 DF 0D C3 E5 0D C3 F2 0D C3 05 0E C3 CD 0C ................ 0B30: C3 EB 0D C3 A9 0C C3 BB 0C C3 C1 0C C3 74 0C C3 .............t.. #G 01 PASS 9331 C-ME- A=00 B=0B00 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 0B 00 00 0B 3..... #G 01 PASS 9341 -Z-EI A=00 B=0036 D=A66E H=0B80 S=6FE6 P=9341 RZ *7767 #D0B00 0B00: 3C 12 C3 9C 0B FE 41 DA 58 0B FE 51 D2 58 0B D1 <.....A.X..Q.X.. 0B10: D5 13 1A B7 C2 58 0B 7E D6 40 12 23 7E FE 3A C2 .....X.~.@.#~.:. 0B20: 6B 0B 23 D1 C3 5E 0B 2A 8D 03 6A 54 0E 02 7E 12 k.#..^.*..jT..~. 0B30: 23 13 0D C2 AE 0B C9 0E 00 1A 77 B7 79 C8 23 13 #.........w.y.#. 0B40: 03 C3 B9 0B AF 21 9F 0D 34 FC E2 09 B7 C0 3A 9F .....!..4.....:. 0B50: 0D 21 80 00 CD B0 0C AF 7E C9 01 40 B4 2A 8D 03 .!......~..@.*.. 0B60: 68 7E A1 C9 01 A0 B4 CD DD 0B 79 B6 77 C9 01 A0 h~........y.w... 0B70: B4 CD DD 0B 79 2F A6 77 C9 2A 8D 03 68 77 C9 2A ....y/.w.*..hw.* 0B80: 03 D3 10 D3 12 3E 11 D3 10 D3 12 C9 CD 91 0F 0D .....>.......... 0B90: 0A 43 50 2F 4D 20 33 20 42 49 4F 53 20 76 31 2E .CP/M 3 BIOS v1. 0BA0: 30 20 66 6F 72 20 41 6C 74 61 69 72 20 38 22 20 0 for Altair 8" 0BB0: 46 6C 6F 70 70 79 0D 0A 00 31 00 01 3E C3 32 00 Floppy...1..>.2. #G 01 PASS 9331 C-ME- A=00 B=0B80 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 13 00 80 0B 3..... #G 01 PASS 9341 -Z-EI A=00 B=0006 D=9996 H=0C00 S=6FE6 P=9341 RZ *7767 #D0B80 0B80: 8D 03 68 7E C9 CD 49 09 45 3E 0D CD A6 0C 3E 0A ..h~..I.E>....>. 0B90: C3 A6 0C D6 0A DA 25 0C 1E 30 1C D6 0A D2 1A 0C ......%..0...... 0BA0: F5 CD 3C 09 F1 C6 3A C3 16 09 7E B7 C8 B9 C8 CD ..<...:...~..... 0BB0: A6 0C 23 C3 2A 0C CD 41 0A C8 21 67 0D 7E B7 36 ..#.*..A..!g.~.6 0BC0: 00 C0 2A 9B 0D 0E 20 CD 2A 0C 3E 3F CD 16 09 C3 ..*... .*.>?.... 0BD0: 06 05 CD 41 0A 2A 6C 0D 22 9B 0D C8 7E FE 30 DA ...A.*l."...~.0. 0BE0: 3A 0C FE 3A D2 3A 0C CD 71 0C 22 6C 0D F6 01 78 :..:.:..q."l...x 0BF0: C9 06 00 7E D6 30 D8 FE 0A D0 F5 78 87 87 80 87 ...~.0.....x.... 0C00: 26 0C C3 00 01 CD 91 0F 0D 0A 42 49 4F 53 20 63 &.........BIOS c 0C10: 61 6E 27 74 20 6F 70 65 6E 20 43 43 50 2E 43 4F an't open CCP.CO 0C20: 4D 20 00 C3 4B 0C CD 91 0F 0D 0A 42 49 4F 53 20 M ..K......BIOS 0C30: 68 61 73 20 62 61 64 20 73 65 63 74 6F 72 20 69 has bad sector i #G 01 PASS 9331 C-ME- A=00 B=0C00 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 1B 00 00 0C 3..... #G 01 PASS 9341 -Z-EI A=00 B=0016 D=9DDE H=0C80 S=6FE6 P=9341 RZ *7767 #D0C00 0C00: 47 F1 23 80 47 FE 10 DA 73 0C C3 3A 0C 13 26 08 G.#.G...s..:..&. 0C10: CD 98 0C CD A4 0C 26 03 1A E6 7F CD A6 0C 13 25 ......&........% 0C20: C2 98 0C C9 3E 20 C5 D5 E5 CD 16 09 E1 D1 C1 C9 ....> .......... 0C30: 85 6F D0 24 C9 3E 3F 12 13 05 C2 B7 0C B7 C9 01 .o.$.>?......... 0C40: FF 00 D5 E5 1A E6 7F FE 21 DA D0 0C BE C2 E0 0C ........!....... 0C50: 13 0C 3E 20 BE 23 C2 C4 0C E1 D1 CD AE 0B 78 C9 ..> .#........x. 0C60: 3E 20 BE 23 C2 E2 0C D1 D1 04 0E FF 7E D6 01 D2 > .#........~... 0C70: C2 0C C9 45 6E 74 65 72 20 55 73 65 72 20 23 3A ...Enter User #: 0C80: 0B 78 B1 C2 7C 0C C9 AF C9 C9 3E FF 32 57 12 CD .x..|.....>.2W.. 0C90: 07 0F FB 3E 08 D3 09 2A 8D 24 C3 D3 0C 2A 8F 24 ...>...*.$...*.$ 0CA0: C3 12 0D 2A 8D 24 C3 F6 0C 2A 8F 24 C3 34 0D 2A ...*.$...*.$.4.* 0CB0: 91 24 C3 D3 0C 2A 93 24 C3 12 0D 2A 91 24 C3 F6 .$...*.$...*.$.. #G 01 PASS 9331 C-ME- A=00 B=0C80 D=92B2 H=9331 S=6FE6 P=9331 CALL 944E *944E #DA983,A988 A983: 33 00 05 00 80 0C 3..... #G 01 PASS 9341 -Z-EI A=00 B=002A D=A338 H=0D00 S=6FE6 P=9341 RZ *7767 #D0C80 0C80: 20 24 4E 6F 20 46 69 6C 65 24 20 72 65 71 75 69 $No File$ requi 0C90: 72 65 64 24 45 52 41 53 45 20 24 20 28 59 2F 4E red$ERASE $ (Y/N 0CA0: 29 3F 20 24 0D 0A 0D 0A 50 72 65 73 73 20 52 45 )? $....Press RE 0CB0: 54 55 52 4E 20 74 6F 20 43 6F 6E 74 69 6E 75 65 TURN to Continue 0CC0: 20 24 20 20 28 55 73 65 72 20 30 29 24 00 4E 4F $ (User 0)$.NO 0CD0: 4E 2D 53 59 53 54 45 4D 20 46 49 4C 45 28 53 29 N-SYSTEM FILE(S) 0CE0: 20 45 58 49 53 54 24 00 00 00 3A 00 00 00 D0 0D EXIST$...:..... 0CF0: 00 00 00 01 24 24 24 20 20 20 20 20 53 55 42 00 ....$$$ SUB. 0D00: 04 7C B5 C2 F8 0C C9 CD 52 0D 62 0D 6A 0D 72 0D .|......R.b.j.r. 0D10: 7C 0D 06 00 29 D2 22 0D CD 47 0D B7 CA 18 0D CD |...)."..G...... 0D20: 29 0D 04 7C B5 C2 14 0D C9 CD 52 0D B6 0D B9 0D )..|......R..... 0D30: BC 0D BF 0D 06 00 29 3E FF DC 47 0D B7 C8 04 7C ......)>..G....| #G *2044 #X ----- A=C3 B=F312 D=050C H=0464 S=0ED5 P=2044 RST 07 ======================================================================= === It appears to have loaded the CCP.COM file at location 0100 but === === then jumped to location 2044, which halts the system. ===
Let's backup to boot and wboot and see what happens after the open attempt in ldccp:
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #G8E00,A893 *A893 #T -Z-EI A=42 B=0001 D=6F00 H=005E S=027F P=A893 LXI SP,8ECD -Z-EI A=42 B=0001 D=6F00 H=005E S=8ECD P=A896 MVI C,0F -Z-EI A=42 B=000F D=6F00 H=005E S=8ECD P=A898 PUSH B -Z-EI A=42 B=000F D=6F00 H=005E S=8ECB P=A899 CALL 9104 ---EI A=0F B=0F0F D=9127 H=9243 S=8ECB P=A89C POP B ---EI A=0F B=000F D=9127 H=9243 S=8ECD P=A89D DCR C ----I A=0F B=000E D=9127 H=9243 S=8ECD P=A89E JP A898 ----I A=0F B=000E D=9127 H=9243 S=8ECD P=A898 PUSH B ----I A=0F B=000E D=9127 H=9243 S=8ECB P=A899 CALL 9104 ----I A=0E B=0E0E D=9125 H=9243 S=8ECB P=A89C POP B ----I A=0E B=000E D=9125 H=9243 S=8ECD P=A89D DCR C ----I A=0E B=000D D=9125 H=9243 S=8ECD P=A89E JP A898 ----I A=0E B=000D D=9125 H=9243 S=8ECD P=A898 PUSH B ----I A=0E B=000D D=9125 H=9243 S=8ECB P=A899 CALL 9104 ----I A=0D B=0D0D D=9123 H=9243 S=8ECB P=A89C POP B ----I A=0D B=000D D=9123 H=9243 S=8ECD P=A89D DCR C ---EI A=0D B=000C D=9123 H=9243 S=8ECD P=A89E JP A898 ---EI A=0D B=000C D=9123 H=9243 S=8ECD P=A898 PUSH B ---EI A=0D B=000C D=9123 H=9243 S=8ECB P=A899 CALL 9104 ---EI A=0C B=0C0C D=9121 H=9243 S=8ECB P=A89C POP B ---EI A=0C B=000C D=9121 H=9243 S=8ECD P=A89D DCR C ----I A=0C B=000B D=9121 H=9243 S=8ECD P=A89E JP A898 ----I A=0C B=000B D=9121 H=9243 S=8ECD P=A898 PUSH B ----I A=0C B=000B D=9121 H=9243 S=8ECB P=A899 CALL 9104 ----I A=0B B=0B0B D=911F H=9243 S=8ECB P=A89C POP B ----I A=0B B=000B D=911F H=9243 S=8ECD P=A89D DCR C ---EI A=0B B=000A D=911F H=9243 S=8ECD P=A89E JP A898 ---EI A=0B B=000A D=911F H=9243 S=8ECD P=A898 PUSH B ---EI A=0B B=000A D=911F H=9243 S=8ECB P=A899 CALL 9104 ---EI A=0A B=0A0A D=911D H=9243 S=8ECB P=A89C POP B ---EI A=0A B=000A D=911D H=9243 S=8ECD P=A89D DCR C ---EI A=0A B=0009 D=911D H=9243 S=8ECD P=A89E JP A898 ---EI A=0A B=0009 D=911D H=9243 S=8ECD P=A898 PUSH B ---EI A=0A B=0009 D=911D H=9243 S=8ECB P=A899 CALL 9104 ---EI A=09 B=0909 D=911B H=9243 S=8ECB P=A89C POP B ---EI A=09 B=0009 D=911B H=9243 S=8ECD P=A89D DCR C ----I A=09 B=0008 D=911B H=9243 S=8ECD P=A89E JP A898 ----I A=09 B=0008 D=911B H=9243 S=8ECD P=A898 PUSH B ----I A=09 B=0008 D=911B H=9243 S=8ECB P=A899 CALL 9104 ----I A=08 B=0808 D=9119 H=9243 S=8ECB P=A89C POP B ----I A=08 B=0008 D=9119 H=9243 S=8ECD P=A89D DCR C ----I A=08 B=0007 D=9119 H=9243 S=8ECD P=A89E JP A898 ----I A=08 B=0007 D=9119 H=9243 S=8ECD P=A898 PUSH B ----I A=08 B=0007 D=9119 H=9243 S=8ECB P=A899 CALL 9104 ----- A=07 B=0707 D=9117 H=9243 S=8ECB P=A89C POP B ----- A=07 B=0007 D=9117 H=9243 S=8ECD P=A89D DCR C ---EI A=07 B=0006 D=9117 H=9243 S=8ECD P=A89E JP A898 ---EI A=07 B=0006 D=9117 H=9243 S=8ECD P=A898 PUSH B ---EI A=07 B=0006 D=9117 H=9243 S=8ECB P=A899 CALL 9104 ---E- A=06 B=0606 D=9115 H=9243 S=8ECB P=A89C POP B ---E- A=06 B=0006 D=9115 H=9243 S=8ECD P=A89D DCR C ---EI A=06 B=0005 D=9115 H=9243 S=8ECD P=A89E JP A898 ---EI A=06 B=0005 D=9115 H=9243 S=8ECD P=A898 PUSH B ---EI A=06 B=0005 D=9115 H=9243 S=8ECB P=A899 CALL 9104 ---E- A=05 B=0505 D=9113 H=9243 S=8ECB P=A89C POP B ---E- A=05 B=0005 D=9113 H=9243 S=8ECD P=A89D DCR C ----I A=05 B=0004 D=9113 H=9243 S=8ECD P=A89E JP A898 ----I A=05 B=0004 D=9113 H=9243 S=8ECD P=A898 PUSH B ----I A=05 B=0004 D=9113 H=9243 S=8ECB P=A899 CALL 9104 ----- A=04 B=0404 D=9111 H=9243 S=8ECB P=A89C POP B ----- A=04 B=0004 D=9111 H=9243 S=8ECD P=A89D DCR C ---EI A=04 B=0003 D=9111 H=9243 S=8ECD P=A89E JP A898 ---EI A=04 B=0003 D=9111 H=9243 S=8ECD P=A898 PUSH B ---EI A=04 B=0003 D=9111 H=9243 S=8ECB P=A899 CALL 9104 ---E- A=03 B=0303 D=910F H=91DD S=8ECB P=A89C POP B ---E- A=03 B=0003 D=910F H=91DD S=8ECD P=A89D DCR C ----I A=03 B=0002 D=910F H=91DD S=8ECD P=A89E JP A898 ----I A=03 B=0002 D=910F H=91DD S=8ECD P=A898 PUSH B ----I A=03 B=0002 D=910F H=91DD S=8ECB P=A899 CALL 9104 ----- A=02 B=0202 D=910D H=91DD S=8ECB P=A89C POP B ----- A=02 B=0002 D=910D H=91DD S=8ECD P=A89D DCR C ----I A=02 B=0001 D=910D H=91DD S=8ECD P=A89E JP A898 ----I A=02 B=0001 D=910D H=91DD S=8ECD P=A898 PUSH B ----I A=02 B=0001 D=910D H=91DD S=8ECB P=A899 CALL 9104 ----- A=01 B=0101 D=910B H=91DD S=8ECB P=A89C POP B ----- A=01 B=0001 D=910B H=91DD S=8ECD P=A89D DCR C -Z-EI A=01 B=0000 D=910B H=91DD S=8ECD P=A89E JP A898 -Z-EI A=01 B=0000 D=910B H=91DD S=8ECD P=A898 PUSH B -Z-EI A=01 B=0000 D=910B H=91DD S=8ECB P=A899 CALL 9104 -Z-E- A=11 B=0000 D=9109 H=91D1 S=8ECB P=A89C POP B -Z-E- A=11 B=0000 D=9109 H=91D1 S=8ECD P=A89D DCR C --ME- A=11 B=00FF D=9109 H=91D1 S=8ECD P=A89E JP A898 --ME- A=11 B=00FF D=9109 H=91D1 S=8ECD P=A8A1 CALL 9037 CP/M Plus v3.0hd *A8A4 # =======================================================================
Let's list the code here to find boot$1, and ultimately ldccp
======================================================================= #L A8A4 LXI B,1000 A8A7 LXI H,9288 A8AA PUSH B A8AB MOV E,M A8AC INX H A8AD MOV D,M A8AE INX H A8AF MOV A,E A8B0 ORA D A8B1 JZ A8C9 A8B4 PUSH H A8B5 XCHG A8B6 DCX H A8B7 DCX H A8B8 MOV A,M A8B9 STA A982 A8BC MOV A,C A8BD STA A981 A8C0 DCX H A8C1 MOV D,M A8C2 DCX H A8C3 MOV E,M A8C4 XCHG A8C5 CALL 8FB1 A8C8 POP H A8C9 POP B A8CA INR C A8CB DCR B A8CC JNZ A8AA A8CF JMP 8E63 (jmp boot$1) A8D2 MOV A,C A8D3 STA A981 A8D6 MOV L,C #L8E63 8E63 CALL 8E78 8E66 CALL 9060 (call ?ldccp) 8E69 JMP 0100 8E6C LXI SP,8ECD 8E6F CALL 8E78 8E72 CALL 9091 8E75 JMP 0100 8E78 MVI A,C3 8E7A STA 0000 8E7D STA 0005 8E80 LXI H,8E03 # =======================================================================
Now let's put a passpoint at ldccp.
======================================================================= #P9060 #G 01 PASS 9060 (?ldccp) -Z-EI A=C3 B=0010 D=0000 H=6F06 S=8ECB P=9060 XRA A -Z-E- A=00 B=0010 D=0000 H=6F06 S=8ECB P=9061 STA 90D9 -Z-E- A=00 B=0010 D=0000 H=6F06 S=8ECB P=9064 LXI H,0000 -Z-E- A=00 B=0010 D=0000 H=0000 S=8ECB P=9067 SHLD 90EA -Z-E- A=00 B=0010 D=0000 H=0000 S=8ECB P=906A LXI D,90CA -Z-E- A=00 B=0010 D=90CA H=0000 S=8ECB P=906D CALL 9095 ----- A=00 B=0000 D=0008 H=0000 S=8ECB P=9070 INR A ----- A=01 B=0000 D=0008 H=0000 S=8ECB P=9071 ??= 20 *9072 # =======================================================================
So what happened here? Location 9071 has JRNZ CCP$FOUND. Need to modify
BOOT3.ASM to change that instruction to an 8080-compatible JNZ instruction.
Only Z80 has those relative jump instructions.
Changed JRNZ to JNZ and it booted right up!
But when typing "DIR", I see this:
======================================================================= A>dir A: BIOS3 : S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ : BIOS3 A: S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ : BIOS3 : S3 SP R A: PA $$$$ $$$ : $$$$$$$$ $$$ : BIOS3 : PA $$$$ $$$ : $$$$$$$$ $$$ A: S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ : BIOS3 : S3 SP R A: PA $$$$ $$$ : $$$$$$$$ $$$ : BIOS3 : S3 SP R : PA $$$$ $$$ A: $$$$$$$$ $$$ : BIOS3 : S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ Press RETURN to Continue A> =======================================================================
The system boots just fine, but the directory listing is strange.
So I'll monitor what track and sector are being requested and also what is being read into memory AFTER the boot process is completed. I'll do a "DIR" command and watch what is being read. And I'll compare it with a known-good version of Mike Douglas's BIOS.
First, let's find out where everything is. Placing passpoints at setsec, settrk and setdma will illuminate where @SECT, @TRK and @DMA are in memory. And then we'll set a passpoint at the end of the read function and monitor what happens there.
======================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1C00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP A894 (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP A902 (home) 8E1B JMP A8D3 (seldsk) 8E1E JMP A905 (settrk) 8E21 JMP A90B (setsec) 8E24 JMP A912 (setdma) 8E27 JMP A929 (read) 8E2A JMP A93F (write) 8E2D JMP 8F0D (listst) 8E30 JMP A91E (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9105 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP A960 (multio) 8E48 JMP A964 (flush) 8E4B JMP 9283 (move) 8E4E JMP 9095 (time) 8E51 JMP 9020 (selmem) 8E54 JMP A91A (setbnk) 8E57 JMP 9282 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) =======================================================================
Setting passpoints at setsec, settrk and setdma to find out where the memory locations of interest are located.
======================================================================= #PA905 (settrk) #PA90B (setsec) #PA912 (setdma) #G8E00 CP/M Plus v3.0hd 01 PASS A905 (settrk) -Z-E- A=00 B=0000 D=00C0 H=972F S=6FE0 P=A905 MOV L,C -Z-E- A=00 B=0000 D=00C0 H=9700 S=6FE0 P=A906 MOV H,B -Z-E- A=00 B=0000 D=00C0 H=0000 S=6FE0 P=A907 SHLD A984 -Z-E- A=00 B=0000 D=00C0 H=0000 S=6FE0 P=A90A RET *774F =======================================================================
@TRK is at location A984. Notice the first time, it stored 00 there.
======================================================================= #G 01 PASS A905 (settrk again) -Z-EI A=00 B=0002 D=0000 H=0002 S=6FC8 P=A905 MOV L,C *A906 #G (so skip it, keep runnin') 01 PASS A90B (setsec) --ME- A=93 B=0001 D=0000 H=0001 S=6FD0 P=A90B MOV L,C --ME- A=93 B=0001 D=0000 H=0001 S=6FD0 P=A90C MOV H,B --ME- A=93 B=0001 D=0000 H=0001 S=6FD0 P=A90D DCX H --ME- A=93 B=0001 D=0000 H=0000 S=6FD0 P=A90E SHLD A986 --ME- A=93 B=0001 D=0000 H=0000 S=6FD0 P=A911 RET *7853 =======================================================================
@SECT is at location A986.
======================================================================= #G 01 PASS A912 (setdma) --ME- A=93 B=96AE D=0000 H=96AE S=6FD2 P=A912 MOV L,C --ME- A=93 B=96AE D=0000 H=96AE S=6FD2 P=A913 MOV H,B --ME- A=93 B=96AE D=0000 H=96AE S=6FD2 P=A914 SHLD A988 --ME- A=93 B=96AE D=0000 H=96AE S=6FD2 P=A917 LDA 9036 --ME- A=00 B=96AE D=0000 H=96AE S=6FD2 P=A91A STA A98B --ME- A=00 B=96AE D=0000 H=96AE S=6FD2 P=A91D RET *8CE6 =======================================================================
@DMA is at location A988. The 9036 (@CBNK) and A98B (@DBNK) locations are only used in systems with bank-memory.
Now let's find out where the fdRead function returns - the actual hardware layer code called by the "read" function in the jump table above - so we can place a passpoint there for monitoring. Before modifying the code to replace the JRNZ with a JNZ, the RZ (return on success) was at 9341 and the RET (return on failure) was at 9343. So I expect them to be very close to those locations after the code change, because the new code is only one byte longer than the old code. We'll list about ten bytes ahead of the end of the read function and simply look to find the RZ and RET with the INR A between them. That is the end of the read code function.
======================================================================= #L9330 9330 RET 9331 RET 9332 CALL 944F 9335 EI 9336 CALL 93E8 9339 EI 933A JNZ 9340 933D CALL 9353 9340 MVI A,00 9342 RZ 9343 INR A 9344 RET 9345 CALL 944F 9348 EI 9349 CALL 93E8 934C EI 934D JNZ 9340 9350 JMP 937A 9353 CALL 93D8 9356 CALL 95A2 9359 MOV A,M 935A ORA A # =======================================================================
The returns I'm interested in appear to be at locations 9342 and 9344.
And now that I know where @TRK, @SECT and @DMA are stored in memory,
I'm not interested in stopping in the setsec, settrk or setdma functions anymore.
So I'll remove those passpoints too.
======================================================================= #P9342 #P9344 #-PA905 (settrk) #-PA90B (setsec) #-PA912 (setdma) #G 01 PASS 9342 -Z-EI A=00 B=0000 D=97F8 H=972E S=6FD2 P=9342 RZ *7767 #G 01 PASS 9342 -Z-EI A=00 B=0010 D=9C40 H=972E S=6FD2 P=9342 RZ *7767 #G 01 PASS 9342 -Z-EI A=00 B=0020 D=A088 H=972E S=6FD2 P=9342 RZ *7767 #G 01 PASS 9342 -Z-EI A=00 B=0030 D=A4D0 H=972E S=6FD2 P=9342 RZ *7767 =========================================================================================
... and just keep doing this 'til we get to the "A>" prompt.
That's what I'm interested in right now. It reads a few dozen sectors
before it is done loading CCP.COM.
========================================================================================= #G 01 PASS 9342 -Z-EI A=00 B=0024 D=A19A H=972E S=6FD4 P=9342 RZ *7767 #G 01 PASS 9342 -Z-EI A=00 B=0034 D=A5E2 H=972E S=6FD4 P=9342 RZ *7767 #G 01 PASS 9342 -Z-EI A=00 B=0008 D=9A1C H=972E S=6FD4 P=9342 RZ *7767 #G A> =======================================================================
Now we're booted. Type "DIR" and monitor @TRK, @SECT and @DMA at the end of each sector read.
======================================================================= A>DIR 01 PASS 9342 -Z-EI A=00 B=0000 D=97F8 H=972E S=6FD6 P=9342 RZ *7767 #DA984,A989 A984: 02 00 00 00 AE 96 ...... #D96AE 96AE: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 96BE: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 96CE: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 96DE: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96EE: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 96FE: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970E: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 971E: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972E: FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 00 ................ 973E: 00 00 00 7E 65 11 1E 16 CE D5 01 0B 00 00 00 00 ...~e........... 974E: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #G A: BIOS3 : S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS 9342 -Z-EI A=00 B=0010 D=9C40 H=972E S=6FD6 P=9342 RZ *7767 =======================================================================
OK, that's interesting.
The contents of @TRK, @SECT and @DMA are exactly the same as what they were during the boot sequence after the first sector read. I'll keep looking.
This time, I did all the same stuff to load boot, loading CCP.COM and displaying the "A>" prompt. But when I typed "DIR," I examined locations 0080 in addition to 96AE. I read that CCP expects uses the contents of memory at 0080.
This is what is there:
======================================================================= #D96AE 96AE: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 96BE: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 96CE: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 96DE: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 96EE: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 96FE: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970E: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 971E: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972E: FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 00 ................ 973E: 00 00 00 7E 65 11 1E 16 CE D5 01 0B 00 00 00 00 ...~e........... 974E: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #D0080 0080: 0D 0A 20 42 49 4F 53 33 20 20 20 20 53 50 52 20 .. BIOS3 SPR 0090: 20 38 45 30 30 20 20 31 43 30 30 0D 0A 20 42 44 8E00 1C00.. BD 00A0: 4F 53 33 20 20 20 20 53 50 52 20 20 36 46 30 30 OS3 SPR 6F00 00B0: 20 20 31 46 30 30 0D 0A 20 0A 0D 20 32 37 4B 20 1F00.. .. 27K 00C0: 54 50 41 0A 0D 24 24 24 24 24 24 24 24 24 24 24 TPA..$$$$$$$$$$$ 00D0: 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 $$$$$$$$$$$$$$$$ 00E0: 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 $$$$$$$$$$$$$$$$ 00F0: 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 $$$$$$$$$$$$$$$$ 0100: C3 1A 04 00 00 00 C3 1B 01 C3 06 00 07 00 00 00 ................ 0110: 4C 4F 41 44 45 52 20 20 FF 00 00 79 FE 3B C2 09 LOADER ...y.;.. 0120: 01 C1 C5 21 00 00 39 31 BE 03 22 9A 03 C5 EB 22 ...!..91.."...." 0130: 98 03 7C B5 F5 CC 00 02 F1 C4 30 02 D1 21 00 01 ..|.......0..!.. =======================================================================
Now to do the same thing using the Douglas BIOS. Setting passpoint to 9139, the end of the read function. DMA is set to 9561 during bootup.
======================================================================= #D9561 9561: 00 4C 38 30 20 20 20 20 20 43 4F 4D 00 00 00 54 .L80 COM...T 9571: 02 03 04 05 06 07 00 00 00 00 00 00 00 00 00 00 ................ 9581: 00 50 43 32 46 4C 4F 50 20 43 4F 4D 00 00 00 11 .PC2FLOP COM.... 9591: 08 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95A1: 00 46 4C 4F 50 32 50 43 20 43 4F 4D 00 00 00 13 .FLOP2PC COM.... 95B1: 0A 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95C1: 00 41 53 4D 20 20 20 20 20 43 4F 4D 00 00 00 40 .ASM COM...@ 95D1: 0C 0D 0E 0F 00 00 00 00 00 00 00 00 00 00 00 00 ................ 95E1: FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 00 ................ 95F1: 00 00 00 7E 65 11 1E 16 CE D5 05 0B 00 00 00 00 ...~e........... 9601: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 9611: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ #D0080 0080: 0D 0A 20 42 49 4F 53 33 20 20 20 20 53 50 52 20 .. BIOS3 SPR 0090: 20 38 45 30 30 20 20 31 41 30 30 0D 0A 20 42 44 8E00 1A00.. BD 00A0: 4F 53 33 20 20 20 20 53 50 52 20 20 36 46 30 30 OS3 SPR 6F00 00B0: 20 20 31 46 30 30 0D 0A 20 0A 0D 20 32 37 4B 20 1F00.. .. 27K 00C0: 54 50 41 0A 0D 24 24 24 24 24 24 24 24 24 24 24 TPA..$$$$$$$$$$$ 00D0: 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 $$$$$$$$$$$$$$$$ 00E0: 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 $$$$$$$$$$$$$$$$ 00F0: 24 24 24 24 24 24 24 24 24 24 24 24 24 24 FD 8E $$$$$$$$$$$$$$.. 0100: C3 1A 04 00 00 00 C3 1B 01 C3 06 00 07 00 00 00 ................ 0110: 4C 4F 41 44 45 52 20 20 FF 00 00 79 FE 3B C2 09 LOADER ...y.;.. 0120: 01 C1 C5 21 00 00 39 31 BE 03 22 9A 03 C5 EB 22 ...!..91.."...." 0130: 98 03 7C B5 F5 CC 00 02 F1 C4 30 02 D1 21 00 01 ..|.......0..!.. =======================================================================
I see the same behavior here in both versions of code. So I don't think there's a problem in the read function.
I'll check the seldsk and setdma function calls. Passpoint at each function, watching for it right after a "DIR" request.
First, the Douglas BIOS:
======================================================================= A>DIR 01 PASS 90E5 -Z-EI A=00 B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G A: L80 COM : PC2FLOP COM : FLOP2PC COM : ASM COM 01 PASS 90E5 ----I A=08 B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G : DUMP COM A: XSUB COM : FORMAT COM : LS COM 01 PASS 90E5 ----I A=10 B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G : SUBMIT COM : LOAD COM A: SURVEY COM : VIEW COM 01 PASS 90E5 ---EI A=18 B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G : M80 COM : MAC COM : MBASIC COM 01 PASS 90E5 ----I A=02 B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G A: PIP COM : STAT COM : DDT COM 01 PASS 90E5 ---EI A=0A B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G : PCPUT COM : NSWP COM A: SYSGEN COM : PCGET COM 01 PASS 90E5 ---EI A=12 B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G : CRC COM : MOVCPM COM : SID COM A: CPMLDR COM 01 PASS 90E5 ----I A=1A B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G : CPM3 SYS : CCP COM : CPM3MOD SYS : CPM3DUG SYS 01 PASS 90E5 ----I A=04 B=9561 D=0000 H=9561 S=6FD6 P=90E5 MOV H,B *90E6 #G A> =======================================================================
The only seldsk call happened during bootup. The setdma calls happened before every sector read. But they were all at the same familiar address as happened during the bootup directory read.
Now to do the same thing using the modular code:
======================================================================= A>DIR 01 PASS A912 --ME- A=93 B=96AE D=0000 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G A: BIOS3 : S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0001 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G : BIOS3 A: S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0002 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G : BIOS3 : S3 SP R A: PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0003 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G : BIOS3 : PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0004 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G A: S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0005 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G : BIOS3 : S3 SP R A: PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0006 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G : BIOS3 : S3 SP R : PA $$$$ $$$ A: $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0007 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G : BIOS3 : S3 SP R : PA $$$$ $$$ : $$$$$$$$ $$$ 01 PASS A912 --ME- A=93 B=96AE D=0008 H=96AE S=6FD6 P=A912 MOV L,C *A913 #G Press RETURN to Continue A> =======================================================================
Two differences I see. One is the state of the accumulator and the other is [DE]. These are setdma function entry values. Of course, setdma only cares about [BC], so it's not significant to that particular function. But it may be relevant to subsequent code flow. It doesn't appear to be though - I stepped through the code - but I'm making a note of it anyway, just in case. Still, I think it's just a side-effect of different code being used, and each leaving different left-over data in those registers.
So while I realize that BDOS and CCP are both known good programs, I think it might be useful to trace into them. Might help me learn what is happening to cause the modular BIOS "DIR" command to behave as it does. So I started SID CPMLDR.COM, set a passpoint at the end of the read function and ran it up to the point where CP/M was booted and CCP was in memory. When it displayed the "A>" prompt, I did a "DIR" and the passpoint caught right after the read function. There, I listed location 100 to see where CCP was placed in memory:
======================================================================= A>dir 01 PASS 9342 -Z-EI A=00 B=0000 D=97F8 H=972E S=6FD6 P=9342 RZ *7767 #L0100 0100 JMP 041A <== #L041A 041A LXI SP,0F2D (beginning of CCP) 041D LXI H,050C 0420 PUSH H 0421 LXI D,0D6A 0424 MVI C,31 0426 CALL 0005 0429 SHLD 038D 042C MVI L,FA 042E MOV A,M 042F STA 038F 0432 MVI L,99 ... 04D9 LXI D,0DF5 (chain) 04DC MVI C,7F 04DE MOV A,C 04DF STAX D 04E0 INX D 04E1 CALL 0BAE 04E4 JMP 058B 04E7 MVI L,B5 04E9 MOV A,M 04EA ANI 02 ... 0506 CALL 0BE4 (ccpcr) 0509 CALL 0C09 050C LXI H,0F2B 050F SPHL 0510 XRA A 0511 STA 0D99 0514 LXI H,050C 0517 PUSH H 0518 CALL 0BE4 051B DCX H 051C MOV A,M 051D ANI 01 051F JZ 0564 (jz prompt) 0522 LXI D,0DF5 0525 CALL 097B (call setbuf, which uses D as argument) 0528 MVI C,0F 052A CALL 09F0 ... 0564 LDA 0D70 (prompt) 0567 ORA A 0568 CNZ 0C13 056B CALL 066D (call dirdrv1) 056E MVI A,3E ('>' prompt character) 0570 CALL 0916 (call putc) 0573 LXI D,B1BA 0576 CALL 0BA7 0579 ORA A 057A PUSH PSW 057B LXI B,B480 057E CNZ 0BF1 0581 CALL 094E 0584 CALL 0BEE 0587 POP PSW 0588 CNZ 0AA8 ... 058B CALL 0BDA (ccparse) 058E JNZ 0596 0591 MVI L,C9 0593 MOV A,M 0594 DCX H 0595 MOV M,A 0596 MVI L,C8 0598 MOV A,M 0599 STA 0D9A 059C CALL 09F6 (call uc) 059F RZ 05A0 LXI D,0DAC 05A3 CALL 0B39 (call gcmd) 05A6 LDA 0DB6 05A9 CPI 20 05AB JNZ 0604 (jnz ccpdisk2, execute external command from disk file) 05AE LXI H,0DAC 05B1 MOV A,M 05B2 INX H 05B3 ORA M 05B4 INX H 05B5 MOV A,M 05B6 JNZ 060A (jnz ccpdisk3 - if command preceeded by drive letter) 05B9 LXI H,0637 (ccpbuiltin: begin processing built-in command) 05BC LXI D,0DAE 05BF LDA 0DB0 05C2 CPI 21 (is command shorter than 3 characters?) 05C4 CNC 0CBF (cnc tbls - is command in the built-in cmd table?) 05C7 JNZ 05E8 (jnz ccpdisk0 - if not in table, so external) 05CA LDA 0DA1 (lda option - looking for '[' in command line) 05CD ORA A 05CE MOV A,B 05CF LHLD 0D6C 05D2 SHLD 0D9D 05D5 LXI H,065A 05D8 JZ 0858 (jz tblj) 05DB CPI 04 05DD JC 0786 (jc trycom) 05E0 LXI H,0DB1 05E3 JNZ 05E8 05E6 MVI M,20 05E8 LXI B,B418 (ccpdisk0: lxi b,order) 05EB CALL 0BDD (call getflg; 0=COM 8=COM,SUB 16=SUB,COM) 05EE JZ 0604 (jz ccpdisk2) 05F1 MVI B,08 05F3 SUB B 05F4 JZ 05F9 (jz ccpdisk1; search for COM first, then SUB) 05F7 MVI B,00 05F9 PUSH B (ccpdisk1:) 05FA CALL 087A (call settype) 05FD CALL 07E4 (call exec) 0600 POP PSW (exec returns only if call was unsuccessful, so reset flags and A) 0601 CALL 087A (call settype) 0604 CALL 07E4 (ccpdisk2: call exec) 0607 JMP 0C3A (jmp perror) 060A CPI 20 (ccpdisk3:) 060C JNZ 05E8 (jnz ccpdisk0) 060F CALL 0C36 (call eoc - error if not end of command) 0612 LDA 0DAC 0615 SUI 01 0617 JC 0625 (jc ccpdrive) 061A STA 0D70 (ccpuser:) 061D MVI B,B0 061F CALL 0BF9 (call setbyte) 0622 CALL 0986 (call setuser) 0625 LDA 0DAD (ccpdrive:) 0628 DCR A 0629 RM 062A PUSH PSW 062B CALL 0980 (call select) 062E POP PSW 062F STA 0D72 0632 MVI B,AF 0634 JMP 0BF9 (jmp setbyte) ... 0666 LDA 005C (dirdrv:) 0669 DCR A 066A JP 0670 (jp dirdrv2) 066D LDA 0D72 (dirdrv1:) 0670 ADI 41 0672 JMP 0CA6 (jmp pfc - print drive letter) 0675 MVI C,00 (dir:) 0677 LXI D,0D52 067A JMP 0682 (jmp dirs1) 067D MVI C,80 (dirs:) 067F LXI D,0D4E 0682 PUSH D (dirs1:) 0683 CALL 0699 (call direct) 0686 POP D 0687 JZ 07B8 (jz nofile) 068A MOV A,L 068B CMP B 068C CNC 0C09 068F LXI H,0D4D 0692 DCR M 0693 INR M 0694 RZ (return if no files) 0695 DCR M 0696 JMP 0C05 (jmp pmsgnl) 0699 PUSH B (direct:) 069A CALL 0978 (call sbuf80 - set DMA=0080) 069D CALL 0AD8 (call gfn - parse file name) 06A0 LXI D,005D 06A3 LDAX D 06A4 CPI 20 06A6 MVI B,0B 06A8 CZ 0CB5 (cz setmatch - use "????????.???" if none) 06AB CALL 0C36 (call eoc - make sure there's nothing else) 06AE CALL 09C3 (call srchf - search for first directory entry) 06B1 POP B 06B2 RZ (return if no files found) 06B3 LDA 0D97 (dir0:) 06B6 MOV L,A 06B7 MOV B,A 06B8 INR B 06B9 PUSH H (dir1:) 06BA LXI H,000A 06BD DAD D 06BE MOV A,M 06BF POP H 06C0 ANI 80 06C2 CMP C 06C3 JZ 06CE (jz dir2 - display, if modes agree) 06C6 MVI A,01 06C8 STA 0D4D 06CB JMP 06E5 (jmp dir3 - don't print anything) 06CE DCR B (dir2: print the filename) 06CF CZ 0C08 (cz dirln) 06D2 MOV A,B 06D3 CMP L 06D4 CZ 0666 (cz dirdrv - print drive letter) 06D7 MVI A,3A (':' character) 06D9 CALL 0CA6 (call pfc - print colon) 06DC CALL 0CA4 (call space - print space) 06DF CALL 0C8D (call pfn - print filename) 06E2 CALL 0CA4 (call space) 06E5 PUSH B (dir3:) 06E6 PUSH H 06E7 CALL 0966 (call break - watch for keystroke) 06EA CALL 09C8 (call srchn - search for another match) 06ED POP H 06EE POP B 06EF JNZ 06B9 (jnz dir1) 06F2 INR A (direx:) 06F3 RET ... 0C8D INX D (pfn: print filename) 0C8E MVI H,08 0C90 CALL 0C98 (call pfn1) 0C93 CALL 0CA4 (call space) 0C96 MVI H,03 0C98 LDAX D (pfn1:) 0C99 ANI 7F 0C9B CALL 0CA6 (call pfc) 0C9E INX D 0C9F DCR H 0CA0 JNZ 0C98 (jnz pfn1 - iterate through filename) 0CA3 RET 0CA4 MVI A,20 (space:) 0CA6 PUSH B (pfc:) 0CA7 PUSH D 0CA8 PUSH H 0CA9 CALL 0916 (call putc) 0CAC POP H 0CAD POP D 0CAE POP B 0CAF RET =========================================================================================
The code trace above was the modular code. The data is read from the diskette properly. But it isn't being transferred properly. So I'll scan the MOVE3 module, because that contains memory copy functions used by BIOS and BDOS.
Sure enough, it contains an LDIR instruction. I've run into that before, during the course of this effort. Some of the modules I'm woking on are based on existing code, and apparently much of it was written to run on a Z80 microprocessor.
That was the case here. Replaced the LDIR with DCR B ! JNZ and the directory function works just perfectly. This version of BIOS is now 100% functional with diskettes.
Now it's time to bring in the IDE interface code. Linking the IDE3 module and making a new build:
========================================================================================= B>gencpm CP/M 3.0 System Generation Copyright (C) 1982, Digital Research Default entries are shown in (parens). Default base is Hex, precede entry with # for decimal Use GENCPM.DAT for defaults (Y) ? Create a new GENCPM.DAT file (N) ? Display Load Map at Cold Boot (N) ? Number of console columns (#80) ? Number of lines in console page (#24) ? Backspace echoes erased character (N) ? Rubout echoes erased character (Y) ? Initial default drive (A:) ? Top page of memory (FE) ? B1 Bank switched memory (N) ? Double allocation vectors (N) ? Accept new system definition (Y) ? Setting up Allocation vector for drive C: Setting up Allocation vector for drive D: Setting up directory hash tables: Enable hashing for drive C: (N) ? Enable hashing for drive D: (N) ? Setting up Blocking/Deblocking buffers: The physical record size is 0200H: Available space in 256 byte pages: TPA = 0071H *** Directory buffer required *** *** and allocated for drive C: *** Available space in 256 byte pages: TPA = 006EH Overlay Data buffer for drive C: (Y) ? Available space in 256 byte pages: TPA = 006EH Overlay Directory buffer for drive D: (Y) ? Share buffer(s) with which drive (C:) ? Available space in 256 byte pages: TPA = 006EH Overlay Data buffer for drive D: (Y) ? Share buffer(s) with which drive (C:) ? Available space in 256 byte pages: TPA = 006EH Accept new buffer definitions (Y) ? BIOS3 SPR 8E00H 1E00H BDOS3 SPR 6F00H 1F00H *** CP/M 3.0 SYSTEM GENERATION DONE *** B> B>a:pip a:=b:cpm3.sys B>a: A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1E00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP AAA2 (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP AB10 (home) 8E1B JMP AAE1 (seldsk) 8E1E JMP AB13 (settrk) 8E21 JMP AB19 (setsec) 8E24 JMP AB1F (setdma) 8E27 JMP AB36 (read) 8E2A JMP AB4C (write) 8E2D JMP 8F0D (listst) 8E30 JMP AB2B (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9105 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP AB6D (multio) 8E48 JMP AB71 (flush) 8E4B JMP 9296 (move) 8E4E JMP 9095 (time) 8E51 JMP 9020 (selmem) 8E54 JMP AB27 (setbnk) 8E57 JMP 9295 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) =======================================================================
When trying to select the C: drive, the system hangs. So I set a breakpoint at seldsk, which leads me to the login function:
======================================================================= #PAAE1 (seldsk) #G8E00 CP/M Plus v3.0hd 01 PASS AAE1 -Z-E- A=00 B=0002 D=0200 H=0000 S=6FE0 P=AAE1 MOV A,C -Z-E- A=02 B=0002 D=0200 H=0000 S=6FE0 P=AAE2 STA AB8F -Z-E- A=02 B=0002 D=0200 H=0000 S=6FE0 P=AAE5 MOV L,C -Z-E- A=02 B=0002 D=0200 H=0002 S=6FE0 P=AAE6 MVI H,00 -Z-E- A=02 B=0002 D=0200 H=0002 S=6FE0 P=AAE8 DAD H -Z-E- A=02 B=0002 D=0200 H=0004 S=6FE0 P=AAE9 LXI B,929A -Z-E- A=02 B=929A D=0200 H=0004 S=6FE0 P=AAEC DAD B -Z-E- A=02 B=929A D=0200 H=929E S=6FE0 P=AAED MOV A,M -Z-E- A=B5 B=929A D=0200 H=929E S=6FE0 P=AAEE INX H -Z-E- A=B5 B=929A D=0200 H=929F S=6FE0 P=AAEF MOV H,M -Z-E- A=B5 B=929A D=0200 H=A89F S=6FE0 P=AAF0 MOV L,A -Z-E- A=B5 B=929A D=0200 H=A8B5 S=6FE0 P=AAF1 ORA H --ME- A=BD B=929A D=0200 H=A8B5 S=6FE0 P=AAF2 RZ --ME- A=BD B=929A D=0200 H=A8B5 S=6FE0 P=AAF3 MOV A,E --ME- A=00 B=929A D=0200 H=A8B5 S=6FE0 P=AAF4 ANI 01 -Z-E- A=00 B=929A D=0200 H=A8B5 S=6FE0 P=AAF6 JNZ AB0F -Z-E- A=00 B=929A D=0200 H=A8B5 S=6FE0 P=AAF9 PUSH H -Z-E- A=00 B=929A D=0200 H=A8B5 S=6FDE P=AAFA XCHG -Z-E- A=00 B=929A D=A8B5 H=0200 S=6FDE P=AAFB LXI H,FFFE -Z-E- A=00 B=929A D=A8B5 H=FFFE S=6FDE P=AAFE DAD D CZ-E- A=00 B=929A D=A8B5 H=A8B3 S=6FDE P=AAFF MOV A,M CZ-E- A=00 B=929A D=A8B5 H=A8B3 S=6FDE P=AB00 STA AB90 CZ-E- A=00 B=929A D=A8B5 H=A8B3 S=6FDE P=AB03 LXI H,FFFA CZ-E- A=00 B=929A D=A8B5 H=FFFA S=6FDE P=AB06 DAD D CZ-E- A=00 B=929A D=A8B5 H=A8AF S=6FDE P=AB07 MOV A,M CZ-E- A=03 B=929A D=A8B5 H=A8AF S=6FDE P=AB08 INX H CZ-E- A=03 B=929A D=A8B5 H=A8B0 S=6FDE P=AB09 MOV H,M CZ-E- A=03 B=929A D=A8B5 H=A9B0 S=6FDE P=AB0A MOV L,A CZ-E- A=03 B=929A D=A8B5 H=A903 S=6FDE P=AB0B CALL 8FB1 (vector to login) *8FB1 #P8FB1 (set passpoint at 8FB1) #G 01 PASS 8FB1 --M-- A=00 B=1000 D=92C0 H=9341 S=8EC7 P=8FB1 PCHL *9341 #G 01 PASS 8FB1 --M-- A=01 B=0F01 D=92E3 H=9341 S=8EC7 P=8FB1 PCHL *9341 #G 01 PASS 8FB1 --ME- A=02 B=0E02 D=A8B1 H=A902 S=8EC7 P=8FB1 PCHL *A902 #G 01 PASS 8FB1 --M-- A=03 B=0D03 D=A8D4 H=A902 S=8EC7 P=8FB1 PCHL *A902 #G 01 PASS 8FB1 CZ-E- A=42 B=929A D=92C4 H=9342 S=6FDA P=8FB1 PCHL *9342 #G A>C: 01 PASS 8FB1 CZ-E- A=03 B=929A D=A8B5 H=A903 S=6FDC P=8FB1 PCHL *A903 #T CZ-E- A=03 B=929A D=A8B5 H=A903 S=6FDC P=A903 MVI A,92 CZ-E- A=92 B=929A D=A8B5 H=A903 S=6FDC P=A905 OUT 33 CZ-E- A=92 B=929A D=A8B5 H=A903 S=6FDC P=A907 MVI A,80 CZ-E- A=80 B=929A D=A8B5 H=A903 S=6FDC P=A909 OUT 32 CZ-E- A=80 B=929A D=A8B5 H=A903 S=6FDC P=A90B MVI B,20 CZ-E- A=80 B=209A D=A8B5 H=A903 S=6FDC P=A90D DCR B C---- A=80 B=1F9A D=A8B5 H=A903 S=6FDC P=A90E JNZ A90D C---- A=80 B=1F9A D=A8B5 H=A903 S=6FDC P=A90D DCR B ... C---I A=80 B=019A D=A8B5 H=A903 S=6FDC P=A90E JNZ A90D C---I A=80 B=019A D=A8B5 H=A903 S=6FDC P=A90D DCR B CZ-EI A=80 B=009A D=A8B5 H=A903 S=6FDC P=A90E JNZ A90D CZ-EI A=80 B=009A D=A8B5 H=A903 S=6FDC P=A911 XRA A -Z-E- A=00 B=009A D=A8B5 H=A903 S=6FDC P=A912 OUT 32 A=00 B=009A D=A8B5 H=A903 S=6FDC P=A914 CALL AA47 -Z-E- A=00 B=009A D=A8B5 H=A903 S=6FDA P=AA47 MVI A,28 -Z-E- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA49 MVI B,00 -Z-E- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA4B ??= 10 <== DJNZ -Z-E- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA4C CPI 3D C-ME- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA4E JNZ AA49 C-ME- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA49 MVI B,00 C-ME- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA4B ??= 10 C-ME- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA4C CPI 3D C-ME- A=28 B=009A D=A8B5 H=A903 S=6FDA P=AA4E JNZ AA49 ... ============================================================
Another Z80 instruction! I had let some of the DJNZ instructions slip back into the code. Actually, I had removed them from IDEutil.asm, but I never removed them from IDE3.asm. It also has BIT instructions, which also aren't supported. So I fixed those to make the code compatible with the 8080, much like I had done in IDEutil.
The IDE3.asm module is a blend of Monahan's code and my own. It has a version of wrlba that matches the one in IDEutil, for example. My version removes gaps in the data by making sure no sectors are skipped in translation. It is also rewritten to use only 8080-compatible code.
IDE3.ASM repaired - Replaced DJNZ instructions with DCR B and JNZ and replaced BIT with ANI.
========================================================================================= B>gencpm CP/M 3.0 System Generation Copyright (C) 1982, Digital Research Default entries are shown in (parens). Default base is Hex, precede entry with # for decimal Use GENCPM.DAT for defaults (Y) ? Create a new GENCPM.DAT file (N) ? Display Load Map at Cold Boot (N) ? Number of console columns (#80) ? Number of lines in console page (#24) ? Backspace echoes erased character (N) ? Rubout echoes erased character (Y) ? Initial default drive (A:) ? Top page of memory (FE) ? B1 Bank switched memory (N) ? Double allocation vectors (N) ? Accept new system definition (Y) ? Setting up Allocation vector for drive C: Setting up Allocation vector for drive D: Setting up directory hash tables: Enable hashing for drive C: (N) ? Enable hashing for drive D: (N) ? Setting up Blocking/Deblocking buffers: The physical record size is 0200H: Available space in 256 byte pages: TPA = 0071H *** Directory buffer required *** *** and allocated for drive C: *** Available space in 256 byte pages: TPA = 006EH Overlay Data buffer for drive C: (Y) ? Available space in 256 byte pages: TPA = 006EH Overlay Directory buffer for drive D: (Y) ? Share buffer(s) with which drive (C:) ? Available space in 256 byte pages: TPA = 006EH Overlay Data buffer for drive D: (Y) ? Share buffer(s) with which drive (C:) ? Available space in 256 byte pages: TPA = 006EH Accept new buffer definitions (Y) ? BIOS3 SPR 8E00H 1E00H BDOS3 SPR 6F00H 1F00H *** CP/M 3.0 SYSTEM GENERATION DONE *** B> B>a:pip a:=b:cpm3.sys B>a: A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1E00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP AAAD (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP AB1B (home) 8E1B JMP AAEC (seldsk) 8E1E JMP AB1E (settrk) 8E21 JMP AB24 (setsec) 8E24 JMP AB2A (setdma) 8E27 JMP AB41 (read) 8E2A JMP AB57 (write) 8E2D JMP 8F0D (listst) 8E30 JMP AB36 (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9106 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP AB78 (multio) 8E48 JMP AB7C (flush) 8E4B JMP 9297 (move) 8E4E JMP 9095 (time) 8E51 JMP 9020 (selmem) 8E54 JMP AB32 (setbnk) 8E57 JMP 9296 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) #L8FB1 8FB1 PCHL <=== vector is in the same location, so use it 8FB2 PUSH B 8FB3 PUSH D 8FB4 MOV A,M 8FB5 ORA A 8FB6 JZ 8FC3 8FB9 MOV C,A 8FBA PUSH H 8FBB CALL 8E0C 8FBE POP H 8FBF INX H #P8FB1 (set passpoint at login vector) #G8E00 CP/M Plus v3.0hd 01 PASS 8FB1 --ME- A=00 B=1000 D=92C1 H=9342 S=8EC7 P=8FB1 PCHL *9342 #G 01 PASS 8FB1 --ME- A=01 B=0F01 D=92E4 H=9342 S=8EC7 P=8FB1 PCHL *9342 #G 01 PASS 8FB1 --ME- A=02 B=0E02 D=A8B2 H=A903 S=8EC7 P=8FB1 PCHL *A903 #G 01 PASS 8FB1 --ME- A=03 B=0D03 D=A8D5 H=A903 S=8EC7 P=8FB1 PCHL *A903 #G 01 PASS 8FB1 CZ-E- A=43 B=929B D=92C5 H=9343 S=6FDA P=8FB1 PCHL *9343 #G A>C: 01 PASS 8FB1 CZ-E- A=04 B=929B D=A8B6 H=A904 S=6FDC P=8FB1 PCHL *A904 #T CZ-E- A=04 B=929B D=A8B6 H=A904 S=6FDC P=A904 MVI A,92 CZ-E- A=92 B=929B D=A8B6 H=A904 S=6FDC P=A906 OUT 33 CZ-E- A=92 B=929B D=A8B6 H=A904 S=6FDC P=A908 MVI A,80 CZ-E- A=80 B=929B D=A8B6 H=A904 S=6FDC P=A90A OUT 32 CZ-E- A=80 B=929B D=A8B6 H=A904 S=6FDC P=A90C MVI B,20 CZ-E- A=80 B=209B D=A8B6 H=A904 S=6FDC P=A90E DCR B C---- A=80 B=1F9B D=A8B6 H=A904 S=6FDC P=A90F JNZ A90E (jnz ResetDelay) C---- A=80 B=1F9B D=A8B6 H=A904 S=6FDC P=A90E DCR B C--EI A=80 B=1E9B D=A8B6 H=A904 S=6FDC P=A90F JNZ A90E ... C---I A=80 B=019B D=A8B6 H=A904 S=6FDC P=A90E DCR B CZ-EI A=80 B=009B D=A8B6 H=A904 S=6FDC P=A90F JNZ A90E CZ-EI A=80 B=009B D=A8B6 H=A904 S=6FDC P=A912 XRA A -Z-E- A=00 B=009B D=A8B6 H=A904 S=6FDC P=A913 OUT 32 -Z-E- A=00 B=009B D=A8B6 H=A904 S=6FDC P=A915 CALL AA50 (call Delay$32) -Z-E- A=00 B=009B D=A8B6 H=A904 S=6FDA P=AA50 MVI A,28 -Z-E- A=28 B=009B D=A8B6 H=A904 S=6FDA P=AA52 MVI B,00 -Z-E- A=28 B=009B D=A8B6 H=A904 S=6FDA P=AA54 DCR B --ME- A=28 B=FF9B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 (jnz M0) --ME- A=28 B=FF9B D=A8B6 H=A904 S=6FDA P=AA54 DCR B --M-I A=28 B=FE9B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 ... ----I A=28 B=019B D=A8B6 H=A904 S=6FDA P=AA54 DCR B -Z-EI A=28 B=009B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 -Z-EI A=28 B=009B D=A8B6 H=A904 S=6FDA P=AA58 DCR A ---EI A=27 B=009B D=A8B6 H=A904 S=6FDA P=AA59 JNZ AA52 (jnz Delay3) ---EI A=27 B=009B D=A8B6 H=A904 S=6FDA P=AA52 MVI B,00 ---EI A=27 B=009B D=A8B6 H=A904 S=6FDA P=AA54 DCR B --ME- A=27 B=FF9B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 --ME- A=27 B=FF9B D=A8B6 H=A904 S=6FDA P=AA54 DCR B --M-I A=27 B=FE9B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 ... ----I A=27 B=019B D=A8B6 H=A904 S=6FDA P=AA54 DCR B -Z-EI A=27 B=009B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 -Z-EI A=27 B=009B D=A8B6 H=A904 S=6FDA P=AA58 DCR A ----I A=26 B=009B D=A8B6 H=A904 S=6FDA P=AA59 JNZ AA52 ----I A=26 B=009B D=A8B6 H=A904 S=6FDA P=AA52 MVI B,00 ----I A=26 B=009B D=A8B6 H=A904 S=6FDA P=AA54 DCR B --ME- A=26 B=FF9B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 --ME- A=26 B=FF9B D=A8B6 H=A904 S=6FDA P=AA54 DCR B --M-I A=26 B=FE9B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 ... ----I A=01 B=019B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 ----I A=01 B=019B D=A8B6 H=A904 S=6FDA P=AA54 DCR B -Z-EI A=01 B=009B D=A8B6 H=A904 S=6FDA P=AA55 JNZ AA54 -Z-EI A=01 B=009B D=A8B6 H=A904 S=6FDA P=AA58 DCR A -Z-EI A=00 B=009B D=A8B6 H=A904 S=6FDA P=AA59 JNZ AA52 -Z-EI A=00 B=009B D=A8B6 H=A904 S=6FDA P=AA5C RET -Z-EI A=00 B=009B D=A8B6 H=A904 S=6FDC P=A918 MVI D,E0 -Z-EI A=00 B=009B D=E0B6 H=A904 S=6FDC P=A91A MVI E,0E -Z-EI A=00 B=009B D=E00E H=A904 S=6FDC P=A91C CALL AA6E -Z-EI A=00 B=009B D=E00E H=A904 S=6FDA P=AA6E MVI A,80 -Z-EI A=80 B=009B D=E00E H=A904 S=6FDA P=AA70 OUT 33 -Z-EI A=80 B=009B D=E00E H=A904 S=6FDA P=AA72 MOV A,D -Z-EI A=E0 B=009B D=E00E H=A904 S=6FDA P=AA73 OUT 30 -Z-EI A=E0 B=009B D=E00E H=A904 S=6FDA P=AA75 MOV A,E -Z-EI A=0E B=009B D=E00E H=A904 S=6FDA P=AA76 OUT 32 -Z-EI A=0E B=009B D=E00E H=A904 S=6FDA P=AA78 ORI 20 ---E- A=2E B=009B D=E00E H=A904 S=6FDA P=AA7A OUT 32 ---E- A=2E B=009B D=E00E H=A904 S=6FDA P=AA7C MOV A,E ---E- A=0E B=009B D=E00E H=A904 S=6FDA P=AA7D OUT 32 ---E- A=0E B=009B D=E00E H=A904 S=6FDA P=AA7F XRA A -Z-E- A=00 B=009B D=E00E H=A904 S=6FDA P=AA80 OUT 32 -Z-E- A=00 B=009B D=E00E H=A904 S=6FDA P=AA82 MVI A,92 -Z-E- A=92 B=009B D=E00E H=A904 S=6FDA P=AA84 OUT 33 -Z-E- A=92 B=009B D=E00E H=A904 S=6FDA P=AA86 RET -Z-E- A=92 B=009B D=E00E H=A904 S=6FDC P=A91F MVI B,FF -Z-E- A=92 B=FF9B D=E00E H=A904 S=6FDC P=A921 MVI E,0F -Z-E- A=92 B=FF9B D=E00F H=A904 S=6FDC P=A923 CALL AA5D -Z-E- A=92 B=FF9B D=E00F H=A904 S=6FDA P=AA5D MOV A,E -Z-E- A=0F B=FF9B D=E00F H=A904 S=6FDA P=AA5E OUT 32 -Z-E- A=0F B=FF9B D=E00F H=A904 S=6FDA P=AA60 ORI 40 ----- A=4F B=FF9B D=E00F H=A904 S=6FDA P=AA62 OUT 32 ----- A=4F B=FF9B D=E00F H=A904 S=6FDA P=AA64 IN 30 ----- A=50 B=FF9B D=E00F H=A904 S=6FDA P=AA66 MOV D,A ----- A=50 B=FF9B D=500F H=A904 S=6FDA P=AA67 MOV A,E ----- A=0F B=FF9B D=500F H=A904 S=6FDA P=AA68 OUT 32 ----- A=0F B=FF9B D=500F H=A904 S=6FDA P=AA6A XRA A -Z-E- A=00 B=FF9B D=500F H=A904 S=6FDA P=AA6B OUT 32 -Z-E- A=00 B=FF9B D=500F H=A904 S=6FDA P=AA6D RET -Z-E- A=00 B=FF9B D=500F H=A904 S=6FDC P=A926 ??= CB *A926 # =========================================================================================
I found it! After looping through all that, the code returned to a BIT instruction, which was used to test for IDE interface ready. I replaced that with an ANI and the IDE worked right away!
========================================================================================= A>b: B>gencpm CP/M 3.0 System Generation Copyright (C) 1982, Digital Research Default entries are shown in (parens). Default base is Hex, precede entry with # for decimal Use GENCPM.DAT for defaults (Y) ? Create a new GENCPM.DAT file (N) ? Display Load Map at Cold Boot (N) ? Number of console columns (#80) ? Number of lines in console page (#24) ? Backspace echoes erased character (N) ? Rubout echoes erased character (Y) ? Initial default drive (A:) ? Top page of memory (FE) ? B1 Bank switched memory (N) ? Double allocation vectors (N) ? Accept new system definition (Y) ? Setting up Allocation vector for drive C: Setting up Allocation vector for drive D: Setting up directory hash tables: Enable hashing for drive C: (N) ? Enable hashing for drive D: (N) ? Setting up Blocking/Deblocking buffers: The physical record size is 0200H: Available space in 256 byte pages: TPA = 0071H *** Directory buffer required *** *** and allocated for drive C: *** Available space in 256 byte pages: TPA = 006EH Overlay Data buffer for drive C: (Y) ? Available space in 256 byte pages: TPA = 006EH Overlay Directory buffer for drive D: (Y) ? Share buffer(s) with which drive (C:) ? Available space in 256 byte pages: TPA = 006EH Overlay Data buffer for drive D: (Y) ? Share buffer(s) with which drive (C:) ? Available space in 256 byte pages: TPA = 006EH Accept new buffer definitions (Y) ? BIOS3 SPR 8E00 1E00 BDOS3 SPR 6F00 1F00 *** CP/M 3.0 SYSTEM GENERATION DONE *** B>a:pip cpm3ide.sys=cpm3.sys B>a: A>dir *.sys A: CPM3 SYS : CPM3IDE SYS : CPM3DUG SYS A>era cpm3.sys A>era cpm3ide.sys A>pip cpm3.sys=b:cpm3.sys A>pip cpm3ide.sys=cpm3.sys A>cpmldr CP/M V3.0 Loader Copyright (C) 1982, Digital Research 27K TPA CP/M Plus v3.0hd A>dir A: L80 COM : PC2FLOP COM : FLOP2PC COM : ASM COM : DUMP COM A: XSUB COM : FORMAT COM : LS COM : SUBMIT COM : LOAD COM A: SURVEY COM : VIEW COM : M80 COM : MAC COM : MBASIC COM A: PIP COM : STAT COM : DDT COM : PCPUT COM : NSWP COM A: SYSGEN COM : PCGET COM : CRC COM : MOVCPM COM : SID COM A: CPMLDR COM : CPM3 SYS : CCP COM : CPM3IDE SYS : CPM3DUG SYS A: CLIFE COM A>c: C>dir No File C>a:pip clife.com=a:clife.com C>dir C: CLIFE COM C>clife Life This is a cellular automaton devised by the British mathematician John Conway in 1970. Its evolution is determined by its initial state, requiring no further input. You will only be asked for initial population density, which is then used to create a random distribution of cells. This simulation is Turing complete and can produce and contain a universal constructor or any other Turing machine. The universe is a two-dimensional orthogonal grid, with each position in one of two possible states, live or dead, or populated and unpopulated, respectively. Every cell interacts with its eight neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent. The following transitions occur at each iteration, definining a generation: - A live cell with fewer than two live neighbours dies from underpopulation. - A live cell with two or three live neighbours lives to the next generation. - A live cell with more than three live neighbours dies from overpopulation. - A space surrounded by three cells becomes a live cell from reproduction. Starting population density as a percentage? 22 Number of generations (0 to loop forever) ? 0 Wait a few seconds, and type a CR: o o o o oo oo o o o o o o o o o o o ooo oooo o o o o o oo o o oo o o o o o o o o oo o oo o o o o o o o o o o o o o o o o o o ooo o oo o o o o o o oo o o o o o oo o o o o oo o o o o o o o ooo o o oooo o o oo o o o o o o o o oo o o o oo o o o o o o o oo o oo o o oo o o oo o o o o o o oo o oo o o o o o o o o o o o o o ooo o ooo o oo o o o o o o o o o o o o o o oo o o o o oo oo oo oo o o o o oo ooooo ooo ooo o o o o o o ooo o o o o o o o o o o o oo o o o ooo oo ooo o o o o o o o o oooo o o o o o o o o o o o o o o oo oo oo oo o oo oo o o oo o o oo oo o oo oo ooo o ooo oo oo o o o o oo oo o o o o o o oo o o o o o o o o o ooo o o o o o o o o oo o o o o oo o o o oo o o oo o Generation 1 ^C C>dir C: CLIFE COM C>D: D>B: B>A: A>stat A: R/W, Space: 60k B: R/W, Space: 56k C: R/W, Space: 8120k D: R/W, Space: 8120k A> =========================================================================================
Sweet! But I still have a few things to verify and/or fix:
1. Need to check the wrlba function in IDE3.asm. At the same time, I need to determine whether I should decrement the sector to make it zero-indexed, like the FDC3 module does.
2. Need to play around with the gencpm overlay settings for drive C and drive D. I want to maximize TPA, but I'm not sure what buffers can be shared and what buffers shouldn't be.
3. Need to study Mike Douglas's ckFlush flow. Right now, if I boot the system and don't touch anything, the A-drive will stay enabled and running. If I press any key, it will stop. This is because I put a call to ckFlush in the cin function, parroting what Mike did in his BIOS. But I need to understand what needs to be done to ensure a drive is disabled automatically when the system is quiescent.
Latest changes:
1. Re-wrote init and login functions in IDE3.
2. Moved ckFlush call to CIST from CI.
3. Re-genned as shown below:
Let's watch the setsec and read flow to see what the new code does with @SECT.
Latest build:
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research BIOS3 SPR 8E00 1E00 BDOS3 SPR 6F00 1F00 27K TPA *01A9 #L8E00 8E00 JMP AAC7 (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP AB35 (home) 8E1B JMP AB06 (seldsk) 8E1E JMP AB38 (settrk) 8E21 JMP AB3E (setsec) 8E24 JMP AB44 (setdma) 8E27 JMP AB5B (read) 8E2A JMP AB71 (write) 8E2D JMP 8F0D (listst) 8E30 JMP AB50 (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9106 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP AB92 (multio) 8E48 JMP AB96 (flush) 8E4B JMP 9297 (move) 8E4E JMP 9095 (time) 8E51 JMP 9020 (selmem) 8E54 JMP AB4C (setbnk) 8E57 JMP 9296 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) #PAB3E (passpoint at setsec) #PAB5B (passpoint at read) #G8E00 CP/M Plus v3.0hd 01 PASS AB3E --M-- A=B3 B=0001 D=0000 H=0001 S=6FD0 P=AB3E MOV L,C *AB3F #G 01 PASS AB5B ----I A=01 B=9601 D=0000 H=96C6 S=6FD2 P=AB5B LHLD ABB4 *AB5E #L AB5E MVI H,00 AB60 DAD H AB61 LXI D,929B AB64 DAD D AB65 MOV A,M AB66 INX H AB67 MOV H,M AB68 MOV L,A AB69 PUSH H AB6A LXI D,FFF8 AB6D DAD D AB6E JMP AB84 AB71 LHLD ABB4 AB74 MVI H,00 AB76 DAD H AB77 LXI D,929B AB7A DAD D AB7B MOV A,M AB7C INX H AB7D MOV H,M AB7E MOV L,A AB7F PUSH H AB80 LXI D,FFF6 AB83 DAD D AB84 MOV A,M AB85 INX H AB86 MOV H,M AB87 MOV L,A AB88 POP D AB89 DCX D AB8A DCX D AB8B LDAX D AB8C STA ABB5 AB8F INX D AB90 INX D AB91 PCHL (jump to read) AB92 STA ABBC AB95 RET AB96 XRA A AB97 RET AB98 DCR C AB99 LDAX B AB9A RLC AB9B MOV B,D #G,AB91 *AB91 #X C---I A=00 B=9601 D=92C5 H=9344 S=6FD2 P=AB91 PCHL (read function for floppy is at 9344) #PAB91 #G 01 PASS AB3E --M-- A=B3 B=0009 D=0001 H=0009 S=6FD0 P=AB3E MOV L,C --M-- A=B3 B=0009 D=0001 H=0009 S=6FD0 P=AB3F MOV H,B --M-- A=B3 B=0009 D=0001 H=0009 S=6FD0 P=AB40 SHLD ABB8 (ABB8 = @SECT) --M-- A=B3 B=0009 D=0001 H=0009 S=6FD0 P=AB43 RET *7853 #G =========================================================================================
Completed boot, go to prompt:
========================================================================================= A>C: 01 PASS AB3E -Z-E- A=00 B=0000 D=0000 H=0000 S=6FD2 P=AB3E MOV L,C -Z-E- A=00 B=0000 D=0000 H=0000 S=6FD2 P=AB3F MOV H,B -Z-E- A=00 B=0000 D=0000 H=0000 S=6FD2 P=AB40 SHLD ABB8 (sector 00 this time) -Z-E- A=00 B=0000 D=0000 H=0000 S=6FD2 P=AB43 RET *7853 #G 01 PASS AB91 C---I A=00 B=AB01 D=A8B6 H=A9B6 S=6FD4 P=AB91 PCHL (A9B6 is IDE read function) *A9B6 #T C---I A=00 B=AB01 D=A8B6 H=A9B6 S=6FD4 P=A9B6 CALL 93E8 C---I A=00 B=AB01 D=A8B6 H=A9B6 S=6FD2 P=93E8 LDA ABB8 C---I A=00 B=AB01 D=A8B6 H=A9B6 S=6FD2 P=93EB DCR A C-ME- A=FF B=AB01 D=A8B6 H=A9B6 S=6FD2 P=93EC STA ABB8 C-ME- A=FF B=AB01 D=A8B6 H=A9B6 S=6FD2 P=93EF RET *A9B9 =========================================================================================
We can clearly see here that we don't want the sector decrement function used on the hard drives. It rolled back to FF, so the "00" sector would actually be "3F" since we only use the bottom six bits in the translation scheme in wrlba. The whole system is written to emulate physical 00-3F sectors and 00-FF tracks. Anyway, we don't want to decrement the sector presented to BIOS from BDOS in the hard disk subsystem.
Next and final issue to resolve is the hard disk directory confusion. I assumed that the directory and data buffers would be sorted out by GENCPM, but that doesn't appear to be the case. I've tried configuring both C and D drives to have their own directory and data buffers, having C and D share data buffers only and having C and D share both data and directory buffers. None prevented directory confusion.
Right now, if I select the C drive and read the directory, I see it fine. Then select D, and I can see its directory fine too. But when I come back to C, I see the directory from the D drive. I have to do a ctrl-C to update the directory.
What always works is to enter ctrl-C after selecting a drive. If I do that, the directory is accurate.
So now to find out how to do this automagically as part of the BIOS.
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research 27K TPA *01A9 #L8E00 8E00 JMP AAC0 (boot) 8E03 JMP 8E6C (wboot) 8E06 JMP 8F72 (const) 8E09 JMP 8F8D (conin) 8E0C JMP 8ED5 (conout) 8E0F JMP 8EE1 (list) 8E12 JMP 8EDB (auxout) 8E15 JMP 8F93 (auxin) 8E18 JMP AB2E (home) 8E1B JMP AAFF (seldsk) 8E1E JMP AB31 (settrk) 8E21 JMP AB37 (setsec) 8E24 JMP AB3D (setdma) 8E27 JMP AB54 (read) 8E2A JMP AB6A (write) 8E2D JMP 8F0D (listst) 8E30 JMP AB49 (sectrn) 8E33 JMP 8F01 (conost) 8E36 JMP 8F78 (auxist) 8E39 JMP 8F07 (auxost) 8E3C JMP 8ECD (devtbl) 8E3F JMP 9106 (devini) 8E42 JMP 8ED1 (drvtbl) 8E45 JMP AB8B (multio) 8E48 JMP AB8F (flush) 8E4B JMP 9297 (move) 8E4E JMP 9095 (time) 8E51 JMP 9020 (selmem) 8E54 JMP AB45 (setbnk) 8E57 JMP 9296 (xmove) 8E5A JMP 0000 (userf) 8E5D JMP 0000 (reserv1) 8E60 JMP 0000 (reserv2) #P8F8D (passpoint at conin) #G8E00 CP/M Plus v3.0hd A> 01 PASS 8F8D -Z-E- A=00 B=00E7 D=0DF4 H=7617 S=6FE2 P=8F8D LHLD 8DBE *8F90 #G C (entered C) 01 PASS 8F8D -Z-E- A=00 B=01E7 D=9151 H=7617 S=6FE2 P=8F8D LHLD 8DBE *8F90 #G : (entered :) 01 PASS 8F8D -Z-E- A=00 B=02E7 D=9151 H=7617 S=6FE2 P=8F8D LHLD 8DBE *8F90 #G (entered) C> 01 PASS 8F8D -Z-E- A=00 B=00E7 D=0DF4 H=7617 S=6FE2 P=8F8D LHLD 8DBE *8F90 #G ^C (entered ctrl-C) C> <==== Looks like it acted upon the ctrl-C before the passpoint 01 PASS 8F8D -Z-E- A=00 B=00E7 D=0DF4 H=7617 S=6FE2 P=8F8D LHLD 8DBE *8F90 #-P8F8D So shutting off that passpoint, and #P8E6C creating on at wboot #G C> C> C>^C 01 PASS 8E6C Sure enough, it hits. Step through. -Z-EI A=01 B=01E7 D=9151 H=FFFE S=6FE8 P=8E6C LXI SP,8ECD -Z-EI A=01 B=01E7 D=9151 H=FFFE S=8ECD P=8E6F CALL 8E78 -Z-EI A=01 B=01E7 D=9151 H=FFFE S=8ECB P=8E78 MVI A,C3 -Z-EI A=C3 B=01E7 D=9151 H=FFFE S=8ECB P=8E7A STA 0000 -Z-EI A=C3 B=01E7 D=9151 H=FFFE S=8ECB P=8E7D STA 0005 -Z-EI A=C3 B=01E7 D=9151 H=FFFE S=8ECB P=8E80 LXI H,8E03 -Z-EI A=C3 B=01E7 D=9151 H=8E03 S=8ECB P=8E83 SHLD 0001 -Z-EI A=C3 B=01E7 D=9151 H=8E03 S=8ECB P=8E86 LHLD 8DFE -Z-EI A=C3 B=01E7 D=9151 H=6C06 S=8ECB P=8E89 SHLD 0006 -Z-EI A=C3 B=01E7 D=9151 H=6C06 S=8ECB P=8E8C RET -Z-EI A=C3 B=01E7 D=9151 H=6C06 S=8ECD P=8E72 CALL 9092 -Z-EI A=C3 B=01E7 D=9151 H=6C06 S=8ECB P=9092 JMP 9060 *9060 #L9060 9060 XRA A 9061 STA 90DA 9064 LXI H,0000 9067 SHLD 90EB 906A LXI D,90CB 906D CALL 9096 9070 INR A 9071 JNZ 907F 9074 LXI H,90AA 9077 CALL 8FB2 907A CALL 8E09 907D ??= 18 <== Ooops. Another Z80 instruction (ZR), replacing with JMP 907E POP H 907F LXI D,0100 9082 CALL 909B 9085 LXI D,0080 9088 CALL 90A0 908B LXI D,90CB 908E CALL 90A5 9091 RET 9092 JMP 9060 9095 RET #G,9091 *9091 #T C-MEI A=01 B=1912 D=8EC9 H=1901 S=8ECB P=9091 RET C-MEI A=01 B=1912 D=8EC9 H=1901 S=8ECD P=8E75 JMP 0100 *0100 #G C>dir C: COPYSYS COM : PCGET COM : DIR COM : GENCPM SUB : GENCPM DAT C: PCPUT COM : FORMAT COM : CCP COM : PIP COM : BIOS3 SPR C: IDEUTIL COM : CPM3 SYS : GENCPM COM : SHOW COM : SID COM C: SUBMIT COM : LINK COM : RMAC COM : TYPE COM : PATCH COM C: PUT COM : BDOS3 SPR : CLIFE COM : CPMLDR COM : README TXT C>d: D>dir No File D>c: C>dir No File C>^C 01 PASS 8E6C -Z-EI A=01 B=01E7 D=9151 H=FFFE S=6FE8 P=8E6C LXI SP,8ECD *8E6F #PAAFF (Setting passpoint at seldsk) #G 01 PASS AAFF -Z-E- A=00 B=0000 D=0000 H=0004 S=6FDE P=AAFF MOV A,C *AB00 #T -Z-E- A=00 B=0000 D=0000 H=0004 S=6FDE P=AB00 STA ABAD -Z-E- A=00 B=0000 D=0000 H=0004 S=6FDE P=AB03 MOV L,C -Z-E- A=00 B=0000 D=0000 H=0000 S=6FDE P=AB04 MVI H,00 -Z-E- A=00 B=0000 D=0000 H=0000 S=6FDE P=AB06 DAD H -Z-E- A=00 B=0000 D=0000 H=0000 S=6FDE P=AB07 LXI B,929B -Z-E- A=00 B=929B D=0000 H=0000 S=6FDE P=AB0A DAD B -Z-E- A=00 B=929B D=0000 H=929B S=6FDE P=AB0B MOV A,M -Z-E- A=C5 B=929B D=0000 H=929B S=6FDE P=AB0C INX H -Z-E- A=C5 B=929B D=0000 H=929C S=6FDE P=AB0D MOV H,M -Z-E- A=C5 B=929B D=0000 H=929C S=6FDE P=AB0E MOV L,A -Z-E- A=C5 B=929B D=0000 H=92C5 S=6FDE P=AB0F ORA H --ME- A=D7 B=929B D=0000 H=92C5 S=6FDE P=AB10 RZ --ME- A=D7 B=929B D=0000 H=92C5 S=6FDE P=AB11 MOV A,E --ME- A=00 B=929B D=0000 H=92C5 S=6FDE P=AB12 ANI 01 -Z-E- A=00 B=929B D=0000 H=92C5 S=6FDE P=AB14 JNZ AB2D -Z-E- A=00 B=929B D=0000 H=92C5 S=6FDE P=AB17 PUSH H -Z-E- A=00 B=929B D=0000 H=92C5 S=6FDC P=AB18 XCHG -Z-E- A=00 B=929B D=92C5 H=0000 S=6FDC P=AB19 LXI H,FFFE -Z-E- A=00 B=929B D=92C5 H=FFFE S=6FDC P=AB1C DAD D CZ-E- A=00 B=929B D=92C5 H=92C3 S=6FDC P=AB1D MOV A,M CZ-E- A=00 B=929B D=92C5 H=92C3 S=6FDC P=AB1E STA ABAE CZ-E- A=00 B=929B D=92C5 H=92C3 S=6FDC P=AB21 LXI H,FFFA CZ-E- A=00 B=929B D=92C5 H=FFFA S=6FDC P=AB24 DAD D CZ-E- A=00 B=929B D=92C5 H=92BF S=6FDC P=AB25 MOV A,M CZ-E- A=43 B=929B D=92C5 H=92BF S=6FDC P=AB26 INX H CZ-E- A=43 B=929B D=92C5 H=92C0 S=6FDC P=AB27 MOV H,M CZ-E- A=43 B=929B D=92C5 H=93C0 S=6FDC P=AB28 MOV L,A CZ-E- A=43 B=929B D=92C5 H=9343 S=6FDC P=AB29 CALL 8FB1 CZ-E- A=43 B=929B D=92C5 H=9343 S=6FDA P=8FB1 PCHL *9343 (Address of FDC login function) #PAB29 <== setting passpoint just before calling LOGIN function #-PAAFF remove passpoint at seldsk #G C>B: 01 PASS AB29 CZ-E- A=43 B=929B D=92E8 H=9343 S=6FDE P=AB29 CALL 8FB1 *8FB1 #T CZ-E- A=43 B=929B D=92E8 H=9343 S=6FDC P=8FB1 PCHL CZ-E- A=43 B=929B D=92E8 H=9343 S=6FDC P=9343 RET CZ-E- A=43 B=929B D=92E8 H=9343 S=6FDE P=AB2C POP H CZ-E- A=43 B=929B D=92E8 H=92E8 S=6FE0 P=AB2D RET CZ-E- A=43 B=929B D=92E8 H=92E8 S=6FE2 P=7703 MOV A,H *7704 #G B>C: C>D: 01 PASS AB29 CZ-E- A=07 B=929B D=A8D9 H=A907 S=6FDE P=AB29 CALL 8FB1 *8FB1 #T CZ-E- A=07 B=929B D=A8D9 H=A907 S=6FDC P=8FB1 PCHL *A907 (Address of IDE login function) # =========================================================================================
It appears that login only happens first time a drive is accessed.
So let's look at this a different way. Let's look closely at the flow after seldsk, watching what happens as the IDE drives are selected and deselected, switched back and forth. We'll follow the flow back through BDOS and possibly CCP, wherever it takes us.
First C: access:
========================================================================================= A>sid cpmldr.com CP/M 3 SID - Version 3.0 NEXT MSZE PC END 2500 2500 0100 CBFF #I$B #G CP/M V3.0 Loader Copyright (C) 1982, Digital Research 27K TPA *01A9 #PAAFD (seldsk) #G8E00 CP/M Plus v3.0hd 01 PASS AAFD -Z-E- A=00 B=0000 D=0000 H=0000 S=6FDE P=AAFD MOV A,C *AAFE #G A>C: 01 PASS AAFD -Z-E- A=00 B=0002 D=0200 H=0000 S=6FE0 P=AAFD MOV A,C -Z-E- A=02 B=0002 D=0200 H=0000 S=6FE0 P=AAFE STA ABAB -Z-E- A=02 B=0002 D=0200 H=0000 S=6FE0 P=AB01 MOV L,C -Z-E- A=02 B=0002 D=0200 H=0002 S=6FE0 P=AB02 MVI H,00 -Z-E- A=02 B=0002 D=0200 H=0002 S=6FE0 P=AB04 DAD H -Z-E- A=02 B=0002 D=0200 H=0004 S=6FE0 P=AB05 LXI B,929B -Z-E- A=02 B=929B D=0200 H=0004 S=6FE0 P=AB08 DAD B -Z-E- A=02 B=929B D=0200 H=929F S=6FE0 P=AB09 MOV A,M -Z-E- A=B4 B=929B D=0200 H=929F S=6FE0 P=AB0A INX H -Z-E- A=B4 B=929B D=0200 H=92A0 S=6FE0 P=AB0B MOV H,M -Z-E- A=B4 B=929B D=0200 H=A8A0 S=6FE0 P=AB0C MOV L,A -Z-E- A=B4 B=929B D=0200 H=A8B4 S=6FE0 P=AB0D ORA H --M-- A=BC B=929B D=0200 H=A8B4 S=6FE0 P=AB0E RZ --M-- A=BC B=929B D=0200 H=A8B4 S=6FE0 P=AB0F MOV A,E --M-- A=00 B=929B D=0200 H=A8B4 S=6FE0 P=AB10 ANI 01 -Z-E- A=00 B=929B D=0200 H=A8B4 S=6FE0 P=AB12 JNZ AB2B (jnx not$first$select) -Z-E- A=00 B=929B D=0200 H=A8B4 S=6FE0 P=AB15 PUSH H -Z-E- A=00 B=929B D=0200 H=A8B4 S=6FDE P=AB16 XCHG -Z-E- A=00 B=929B D=A8B4 H=0200 S=6FDE P=AB17 LXI H,FFFE -Z-E- A=00 B=929B D=A8B4 H=FFFE S=6FDE P=AB1A DAD D CZ-E- A=00 B=929B D=A8B4 H=A8B2 S=6FDE P=AB1B MOV A,M CZ-E- A=00 B=929B D=A8B4 H=A8B2 S=6FDE P=AB1C STA ABAC CZ-E- A=00 B=929B D=A8B4 H=A8B2 S=6FDE P=AB1F LXI H,FFFA CZ-E- A=00 B=929B D=A8B4 H=FFFA S=6FDE P=AB22 DAD D CZ-E- A=00 B=929B D=A8B4 H=A8AE S=6FDE P=AB23 MOV A,M CZ-E- A=01 B=929B D=A8B4 H=A8AE S=6FDE P=AB24 INX H CZ-E- A=01 B=929B D=A8B4 H=A8AF S=6FDE P=AB25 MOV H,M CZ-E- A=01 B=929B D=A8B4 H=A9AF S=6FDE P=AB26 MOV L,A CZ-E- A=01 B=929B D=A8B4 H=A901 S=6FDE P=AB27 CALL 8FB1 (call ipchl - vectored HL call) CZ-E- A=01 B=929B D=A8B4 H=A901 S=6FDC P=8FB1 PCHL CZ-E- A=01 B=929B D=A8B4 H=A901 S=6FDC P=A901 XRA A (calling SELECT0 in IDE3) -Z-E- A=00 B=929B D=A8B4 H=A901 S=6FDC P=A902 JMP A907 -Z-E- A=00 B=929B D=A8B4 H=A901 S=6FDC P=A907 OUT 34 -Z-E- A=00 B=929B D=A8B4 H=A901 S=6FDC P=A909 RET (return to seldsk in BIOSKRN3) -Z-E- A=00 B=929B D=A8B4 H=A901 S=6FDE P=AB2A POP H -Z-E- A=00 B=929B D=A8B4 H=A8B4 S=6FE0 P=AB2B RET (return to selectdisk in BDOS) -Z-E- A=00 B=929B D=A8B4 H=A8B4 S=6FE2 P=7703 MOV A,H -Z-E- A=A8 B=929B D=A8B4 H=A8B4 S=6FE2 P=7704 ORA L --M-- A=BC B=929B D=A8B4 H=A8B4 S=6FE2 P=7705 RZ --M-- A=BC B=929B D=A8B4 H=A8B4 S=6FE2 P=7706 MOV E,M --M-- A=BC B=929B D=A800 H=A8B4 S=6FE2 P=7707 INX H --M-- A=BC B=929B D=A800 H=A8B5 S=6FE2 P=7708 MOV D,M --M-- A=BC B=929B D=0000 H=A8B5 S=6FE2 P=7709 INX H --M-- A=BC B=929B D=0000 H=A8B6 S=6FE2 P=770A SHLD 8B8E --M-- A=BC B=929B D=0000 H=A8B6 S=6FE2 P=770D INX H --M-- A=BC B=929B D=0000 H=A8B7 S=6FE2 P=770E INX H --M-- A=BC B=929B D=0000 H=A8B8 S=6FE2 P=770F SHLD 8B90 --M-- A=BC B=929B D=0000 H=A8B8 S=6FE2 P=7712 INX H --M-- A=BC B=929B D=0000 H=A8B9 S=6FE2 P=7713 INX H --M-- A=BC B=929B D=0000 H=A8BA S=6FE2 P=7714 SHLD 8B92 --M-- A=BC B=929B D=0000 H=A8BA S=6FE2 P=7717 INX H --M-- A=BC B=929B D=0000 H=A8BB S=6FE2 P=7718 INX H --M-- A=BC B=929B D=0000 H=A8BC S=6FE2 P=7719 INX H --M-- A=BC B=929B D=0000 H=A8BD S=6FE2 P=771A SHLD 8B94 --M-- A=BC B=929B D=0000 H=A8BD S=6FE2 P=771D INX H --M-- A=BC B=929B D=0000 H=A8BE S=6FE2 P=771E SHLD 8B96 --M-- A=BC B=929B D=0000 H=A8BE S=6FE2 P=7721 INX H --M-- A=BC B=929B D=0000 H=A8BF S=6FE2 P=7722 INX H --M-- A=BC B=929B D=0000 H=A8C0 S=6FE2 P=7723 XCHG --M-- A=BC B=929B D=A8C0 H=0000 S=6FE2 P=7724 SHLD 8BBF --M-- A=BC B=929B D=A8C0 H=0000 S=6FE2 P=7727 LXI H,8B98 --M-- A=BC B=929B D=A8C0 H=8B98 S=6FE2 P=772A MVI C,0D --M-- A=BC B=920D D=A8C0 H=8B98 S=6FE2 P=772C CALL 76F5 ... (used TW to enter and pass through the call) -Z-EI A=00 B=9200 D=A8CD H=8BA5 S=6FE2 P=772F LHLD 8B98 -Z-EI A=00 B=9200 D=A8CD H=A8F0 S=6FE2 P=7732 XCHG -Z-EI A=00 B=9200 D=A8F0 H=A8CD S=6FE2 P=7733 LXI H,8BA5 -Z-EI A=00 B=9200 D=A8F0 H=8BA5 S=6FE2 P=7736 MVI C,11 -Z-EI A=00 B=9211 D=A8F0 H=8BA5 S=6FE2 P=7738 CALL 76F5 ... (used TW to enter and pass through the call) -Z-EI A=03 B=9200 D=A901 H=8BB6 S=6FE2 P=773B LHLD 8BAA -Z-EI A=03 B=9200 D=A901 H=0FEF S=6FE2 P=773E MOV A,H -Z-EI A=0F B=9200 D=A901 H=0FEF S=6FE2 P=773F LXI H,8BC5 -Z-EI A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7742 MVI M,FF -Z-EI A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7744 ORA A ---E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7745 JZ 774A ---E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7748 MVI M,00 ---E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=774A STC C--E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=774B RET (return to disk$select1 in BDOS) C--E- A=0F B=9200 D=A901 H=8BC5 S=6FE4 P=8576 POP H C--E- A=0F B=9200 D=A901 H=0200 S=6FE6 P=8577 JNC 7686 C--E- A=0F B=9200 D=A901 H=0200 S=6FE6 P=857A DCR L C-ME- A=0F B=9200 D=A901 H=02FF S=6FE6 P=857B RET C-ME- A=0F B=9200 D=A901 H=02FF S=6FE8 P=8590 RZ (zero means previosly logged in) C-ME- A=0F B=9200 D=A901 H=02FF S=6FE8 P=8591 CALL 7C90 (call initialize, which reads the directory) C-ME- A=0F B=9200 D=A901 H=02FF S=6FE6 P=7C90 CALL 7ACA (call test$media$flag) C-ME- A=0F B=9200 D=A901 H=02FF S=6FE4 P=7ACA LHLD 8B96 C-ME- A=0F B=9200 D=A901 H=A8BE S=6FE4 P=7ACD INX H C-ME- A=0F B=9200 D=A901 H=A8BF S=6FE4 P=7ACE MOV A,M C-ME- A=00 B=9200 D=A901 H=A8BF S=6FE4 P=7ACF ORA A -Z-E- A=00 B=9200 D=A901 H=A8BF S=6FE4 P=7AD0 RET (return to initialize) -Z-E- A=00 B=9200 D=A901 H=A8BF S=6FE6 P=7C93 MVI M,00 (reset media change flag) -Z-E- A=00 B=9200 D=A901 H=A8BF S=6FE6 P=7C95 CALL 7B10 (call discard$data) -Z-E- A=00 B=9200 D=A901 H=A8BF S=6FE4 P=7B10 LHLD 8BA0 -Z-E- A=00 B=9200 D=A901 H=ABB5 S=6FE4 P=7B13 JMP 7B19 (jmp discard) -Z-E- A=00 B=9200 D=A901 H=ABB5 S=6FE4 P=7B19 MVI C,01 -Z-E- A=00 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1B MOV A,L -Z-E- A=B5 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1C ANA H --M-I A=A1 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1D INR A --M-- A=A2 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1E RZ --M-- A=A2 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1F PUSH H --M-- A=A2 B=9201 D=A901 H=ABB5 S=6FE2 P=7B20 LXI D,8BCC (lxi d, adrive) --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B23 CALL 76EB (call compare) --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EB LDAX D --M-- A=02 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EC CMP M=FF (cmp lastdrive) C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE0 P=76ED RNZ (return to discard) C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B26 POP H C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B27 RNZ (return to initialize) C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE6 P=7C98 CALL 7B16 (call discard$dir) C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B16 LHLD 8B9E C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B19 MVI C,01 C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1B MOV A,L C--E- A=B5 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1C ANA H --M-I A=A1 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1D INR A --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1E RZ --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1F PUSH H --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B20 LXI D,8BCC (lxi d, adrive) --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B23 CALL 76EB (call compare) --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EB LDAX D --M-- A=02 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EC CMP M=FF (cmp lastdrive) C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE0 P=76ED RNZ C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B26 POP H C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B27 RNZ (return to initialize) C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE6 P=7C9B CALL 7C86 (call get$nalbs) C--E- A=02 B=9201 D=8BCC H=ABB5 S=6FE4 P=7C86 LHLD 8BAA (lhld maxall) C--E- A=02 B=9201 D=8BCC H=0FEF S=6FE4 P=7C89 MVI C,03 C--E- A=02 B=9203 D=8BCC H=0FEF S=6FE4 P=7C8B CALL 7969 (call hlrotr) C--E- A=02 B=9203 D=8BCC H=0FEF S=6FE2 P=7969 INR C C---- A=02 B=9204 D=8BCC H=0FEF S=6FE2 P=796A DCR C C--EI A=02 B=9203 D=8BCC H=0FEF S=6FE2 P=796B RZ C--EI A=02 B=9203 D=8BCC H=0FEF S=6FE2 P=796C MOV A,H C--EI A=0F B=9203 D=8BCC H=0FEF S=6FE2 P=796D ORA A ---E- A=0F B=9203 D=8BCC H=0FEF S=6FE2 P=796E RAR C--E- A=07 B=9203 D=8BCC H=0FEF S=6FE2 P=796F MOV H,A C--E- A=07 B=9203 D=8BCC H=07EF S=6FE2 P=7970 MOV A,L C--E- A=EF B=9203 D=8BCC H=07EF S=6FE2 P=7971 RAR C--E- A=F7 B=9203 D=8BCC H=07EF S=6FE2 P=7972 MOV L,A C--E- A=F7 B=9203 D=8BCC H=07F7 S=6FE2 P=7973 JMP 796A C--E- A=F7 B=9203 D=8BCC H=07F7 S=6FE2 P=796A DCR C C---I A=F7 B=9202 D=8BCC H=07F7 S=6FE2 P=796B RZ C---I A=F7 B=9202 D=8BCC H=07F7 S=6FE2 P=796C MOV A,H C---I A=07 B=9202 D=8BCC H=07F7 S=6FE2 P=796D ORA A ----- A=07 B=9202 D=8BCC H=07F7 S=6FE2 P=796E RAR C---- A=03 B=9202 D=8BCC H=07F7 S=6FE2 P=796F MOV H,A C---- A=03 B=9202 D=8BCC H=03F7 S=6FE2 P=7970 MOV A,L C---- A=F7 B=9202 D=8BCC H=03F7 S=6FE2 P=7971 RAR C---- A=FB B=9202 D=8BCC H=03F7 S=6FE2 P=7972 MOV L,A C---- A=FB B=9202 D=8BCC H=03FB S=6FE2 P=7973 JMP 796A C---- A=FB B=9202 D=8BCC H=03FB S=6FE2 P=796A DCR C C---I A=FB B=9201 D=8BCC H=03FB S=6FE2 P=796B RZ C---I A=FB B=9201 D=8BCC H=03FB S=6FE2 P=796C MOV A,H C---I A=03 B=9201 D=8BCC H=03FB S=6FE2 P=796D ORA A ---E- A=03 B=9201 D=8BCC H=03FB S=6FE2 P=796E RAR C--E- A=01 B=9201 D=8BCC H=03FB S=6FE2 P=796F MOV H,A C--E- A=01 B=9201 D=8BCC H=01FB S=6FE2 P=7970 MOV A,L C--E- A=FB B=9201 D=8BCC H=01FB S=6FE2 P=7971 RAR C--E- A=FD B=9201 D=8BCC H=01FB S=6FE2 P=7972 MOV L,A C--E- A=FD B=9201 D=8BCC H=01FD S=6FE2 P=7973 JMP 796A C--E- A=FD B=9201 D=8BCC H=01FD S=6FE2 P=796A DCR C CZ-EI A=FD B=9200 D=8BCC H=01FD S=6FE2 P=796B RZ (return to get$nalbs) CZ-EI A=FD B=9200 D=8BCC H=01FD S=6FE4 P=7C8E INX H CZ-EI A=FD B=9200 D=8BCC H=01FE S=6FE4 P=7C8F RET (return to initialize) *7C9E #G,7CAC (pass through initial iteration) ... (listed code and used G,7CAC to pass through iteration) *7CAC #T -Z-E- A=00 B=0000 D=8BCC H=AFBF S=6FE6 P=7CAC LHLD 8B94 -Z-E- A=00 B=0000 D=8BCC H=A8BD S=6FE6 P=7CAF MOV M,A -Z-E- A=00 B=0000 D=8BCC H=A8BD S=6FE6 P=7CB0 LHLD 8BAE -Z-E- A=00 B=0000 D=8BCC H=FFFF S=6FE6 P=7CB3 XCHG -Z-E- A=00 B=0000 D=FFFF H=8BCC S=6FE6 P=7CB4 LHLD 8B9C -Z-E- A=00 B=0000 D=FFFF H=ADC1 S=6FE6 P=7CB7 MOV M,E -Z-E- A=00 B=0000 D=FFFF H=ADC1 S=6FE6 P=7CB8 INX H -Z-E- A=00 B=0000 D=FFFF H=ADC2 S=6FE6 P=7CB9 MOV M,D -Z-E- A=00 B=0000 D=FFFF H=ADC2 S=6FE6 P=7CBA CALL 774C (call home) ... (used TW to enter and pass through the call) -Z-E- A=00 B=0000 D=FFFF H=A8BC S=6FE6 P=7CBD LHLD 8B8E -Z-E- A=00 B=0000 D=FFFF H=A8B6 S=6FE6 P=7CC0 MVI M,04 -Z-E- A=00 B=0000 D=FFFF H=A8B6 S=6FE6 P=7CC2 INX H -Z-E- A=00 B=0000 D=FFFF H=A8B7 S=6FE6 P=7CC3 MVI M,00 -Z-E- A=00 B=0000 D=FFFF H=A8B7 S=6FE6 P=7CC5 CALL 7B9D (call set$end$dir) ... (used TW to enter and pass through the call) -Z-E- A=00 B=0000 D=FFFF H=FFFF S=6FE6 P=7CC8 LHLD 8BA2 -Z-E- A=00 B=0000 D=FFFF H=FFFF S=6FE6 P=7CCB SHLD 8BD3 -Z-E- A=00 B=0000 D=FFFF H=FFFF S=6FE6 P=7CCE MVI C,FF -Z-E- A=00 B=00FF D=FFFF H=FFFF S=6FE6 P=7CD0 CALL 7BA4 (call read$dir) ... (used TW to enter and pass through the call) -Z-E- A=00 B=00FF D=0000 H=0000 S=6FE6 P=7CD3 CALL 7B94 (call end$of$dir) ... (used TW to enter and pass through the call) =========================================================================================
Now to select D and watch the flow:
========================================================================================= #G C>DIR C: COPYSYS COM : PCGET COM : DIR COM : GENCPM SUB : GENCPM DAT C: PCPUT COM : FORMAT COM : CCP COM : PIP COM : BIOS3 SPR C: IDEUTIL COM : CPM3 SYS : GENCPM COM : SHOW COM : SID COM C: SUBMIT COM : LINK COM : RMAC COM : TYPE COM : PATCH COM C: PUT COM : BDOS3 SPR : CLIFE COM : CPMLDR COM : README TXT C> C>d: 01 PASS AAFD -Z-E- A=00 B=0003 D=0300 H=0000 S=6FE0 P=AAFD MOV A,C -Z-E- A=03 B=0003 D=0300 H=0000 S=6FE0 P=AAFE STA ABAB -Z-E- A=03 B=0003 D=0300 H=0000 S=6FE0 P=AB01 MOV L,C -Z-E- A=03 B=0003 D=0300 H=0003 S=6FE0 P=AB02 MVI H,00 -Z-E- A=03 B=0003 D=0300 H=0003 S=6FE0 P=AB04 DAD H -Z-E- A=03 B=0003 D=0300 H=0006 S=6FE0 P=AB05 LXI B,929B -Z-E- A=03 B=929B D=0300 H=0006 S=6FE0 P=AB08 DAD B -Z-E- A=03 B=929B D=0300 H=92A1 S=6FE0 P=AB09 MOV A,M -Z-E- A=D7 B=929B D=0300 H=92A1 S=6FE0 P=AB0A INX H -Z-E- A=D7 B=929B D=0300 H=92A2 S=6FE0 P=AB0B MOV H,M -Z-E- A=D7 B=929B D=0300 H=A8A2 S=6FE0 P=AB0C MOV L,A -Z-E- A=D7 B=929B D=0300 H=A8D7 S=6FE0 P=AB0D ORA H --ME- A=FF B=929B D=0300 H=A8D7 S=6FE0 P=AB0E RZ --ME- A=FF B=929B D=0300 H=A8D7 S=6FE0 P=AB0F MOV A,E --ME- A=00 B=929B D=0300 H=A8D7 S=6FE0 P=AB10 ANI 01 -Z-E- A=00 B=929B D=0300 H=A8D7 S=6FE0 P=AB12 JNZ AB2B -Z-E- A=00 B=929B D=0300 H=A8D7 S=6FE0 P=AB15 PUSH H -Z-E- A=00 B=929B D=0300 H=A8D7 S=6FDE P=AB16 XCHG -Z-E- A=00 B=929B D=A8D7 H=0300 S=6FDE P=AB17 LXI H,FFFE -Z-E- A=00 B=929B D=A8D7 H=FFFE S=6FDE P=AB1A DAD D CZ-E- A=00 B=929B D=A8D7 H=A8D5 S=6FDE P=AB1B MOV A,M CZ-E- A=01 B=929B D=A8D7 H=A8D5 S=6FDE P=AB1C STA ABAC CZ-E- A=01 B=929B D=A8D7 H=A8D5 S=6FDE P=AB1F LXI H,FFFA CZ-E- A=01 B=929B D=A8D7 H=FFFA S=6FDE P=AB22 DAD D CZ-E- A=01 B=929B D=A8D7 H=A8D1 S=6FDE P=AB23 MOV A,M CZ-E- A=05 B=929B D=A8D7 H=A8D1 S=6FDE P=AB24 INX H CZ-E- A=05 B=929B D=A8D7 H=A8D2 S=6FDE P=AB25 MOV H,M CZ-E- A=05 B=929B D=A8D7 H=A9D2 S=6FDE P=AB26 MOV L,A CZ-E- A=05 B=929B D=A8D7 H=A905 S=6FDE P=AB27 CALL 8FB1 CZ-E- A=05 B=929B D=A8D7 H=A905 S=6FDC P=8FB1 PCHL CZ-E- A=05 B=929B D=A8D7 H=A905 S=6FDC P=A905 MVI A,01 CZ-E- A=01 B=929B D=A8D7 H=A905 S=6FDC P=A907 OUT 34 CZ-E- A=01 B=929B D=A8D7 H=A905 S=6FDC P=A909 RET CZ-E- A=01 B=929B D=A8D7 H=A905 S=6FDE P=AB2A POP H CZ-E- A=01 B=929B D=A8D7 H=A8D7 S=6FE0 P=AB2B RET CZ-E- A=01 B=929B D=A8D7 H=A8D7 S=6FE2 P=7703 MOV A,H CZ-E- A=A8 B=929B D=A8D7 H=A8D7 S=6FE2 P=7704 ORA L --ME- A=FF B=929B D=A8D7 H=A8D7 S=6FE2 P=7705 RZ --ME- A=FF B=929B D=A8D7 H=A8D7 S=6FE2 P=7706 MOV E,M --ME- A=FF B=929B D=A800 H=A8D7 S=6FE2 P=7707 INX H --ME- A=FF B=929B D=A800 H=A8D8 S=6FE2 P=7708 MOV D,M --ME- A=FF B=929B D=0000 H=A8D8 S=6FE2 P=7709 INX H --ME- A=FF B=929B D=0000 H=A8D9 S=6FE2 P=770A SHLD 8B8E --ME- A=FF B=929B D=0000 H=A8D9 S=6FE2 P=770D INX H --ME- A=FF B=929B D=0000 H=A8DA S=6FE2 P=770E INX H --ME- A=FF B=929B D=0000 H=A8DB S=6FE2 P=770F SHLD 8B90 --ME- A=FF B=929B D=0000 H=A8DB S=6FE2 P=7712 INX H --ME- A=FF B=929B D=0000 H=A8DC S=6FE2 P=7713 INX H --ME- A=FF B=929B D=0000 H=A8DD S=6FE2 P=7714 SHLD 8B92 --ME- A=FF B=929B D=0000 H=A8DD S=6FE2 P=7717 INX H --ME- A=FF B=929B D=0000 H=A8DE S=6FE2 P=7718 INX H --ME- A=FF B=929B D=0000 H=A8DF S=6FE2 P=7719 INX H --ME- A=FF B=929B D=0000 H=A8E0 S=6FE2 P=771A SHLD 8B94 --ME- A=FF B=929B D=0000 H=A8E0 S=6FE2 P=771D INX H --ME- A=FF B=929B D=0000 H=A8E1 S=6FE2 P=771E SHLD 8B96 --ME- A=FF B=929B D=0000 H=A8E1 S=6FE2 P=7721 INX H --ME- A=FF B=929B D=0000 H=A8E2 S=6FE2 P=7722 INX H --ME- A=FF B=929B D=0000 H=A8E3 S=6FE2 P=7723 XCHG --ME- A=FF B=929B D=A8E3 H=0000 S=6FE2 P=7724 SHLD 8BBF --ME- A=FF B=929B D=A8E3 H=0000 S=6FE2 P=7727 LXI H,8B98 --ME- A=FF B=929B D=A8E3 H=8B98 S=6FE2 P=772A MVI C,0D --ME- A=FF B=920D D=A8E3 H=8B98 S=6FE2 P=772C CALL 76F5 -Z-EI A=00 B=9200 D=A8F0 H=8BA5 S=6FE2 P=772F LHLD 8B98 -Z-EI A=00 B=9200 D=A8F0 H=A8F0 S=6FE2 P=7732 XCHG -Z-EI A=00 B=9200 D=A8F0 H=A8F0 S=6FE2 P=7733 LXI H,8BA5 -Z-EI A=00 B=9200 D=A8F0 H=8BA5 S=6FE2 P=7736 MVI C,11 -Z-EI A=00 B=9211 D=A8F0 H=8BA5 S=6FE2 P=7738 CALL 76F5 -Z-EI A=00 B=9211 D=A8F0 H=8BA5 S=6FE0 P=76F5 INR C *76F6 #G,773B ... (used G,773B to pass through iterative code) *773B #T -Z-EI A=03 B=9200 D=A901 H=8BB6 S=6FE2 P=773B LHLD 8BAA -Z-EI A=03 B=9200 D=A901 H=0FEF S=6FE2 P=773E MOV A,H -Z-EI A=0F B=9200 D=A901 H=0FEF S=6FE2 P=773F LXI H,8BC5 -Z-EI A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7742 MVI M,FF -Z-EI A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7744 ORA A ---E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7745 JZ 774A ---E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=7748 MVI M,00 ---E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=774A STC C--E- A=0F B=9200 D=A901 H=8BC5 S=6FE2 P=774B RET C--E- A=0F B=9200 D=A901 H=8BC5 S=6FE4 P=8576 POP H C--E- A=0F B=9200 D=A901 H=0300 S=6FE6 P=8577 JNC 7686 C--E- A=0F B=9200 D=A901 H=0300 S=6FE6 P=857A DCR L C-ME- A=0F B=9200 D=A901 H=03FF S=6FE6 P=857B RET C-ME- A=0F B=9200 D=A901 H=03FF S=6FE8 P=8590 RZ C-ME- A=0F B=9200 D=A901 H=03FF S=6FE8 P=8591 CALL 7C90 C-ME- A=0F B=9200 D=A901 H=03FF S=6FE6 P=7C90 CALL 7ACA C-ME- A=0F B=9200 D=A901 H=03FF S=6FE4 P=7ACA LHLD 8B96 C-ME- A=0F B=9200 D=A901 H=A8E1 S=6FE4 P=7ACD INX H C-ME- A=0F B=9200 D=A901 H=A8E2 S=6FE4 P=7ACE MOV A,M C-ME- A=00 B=9200 D=A901 H=A8E2 S=6FE4 P=7ACF ORA A -Z-E- A=00 B=9200 D=A901 H=A8E2 S=6FE4 P=7AD0 RET -Z-E- A=00 B=9200 D=A901 H=A8E2 S=6FE6 P=7C93 MVI M,00 -Z-E- A=00 B=9200 D=A901 H=A8E2 S=6FE6 P=7C95 CALL 7B10 -Z-E- A=00 B=9200 D=A901 H=A8E2 S=6FE4 P=7B10 LHLD 8BA0 -Z-E- A=00 B=9200 D=A901 H=ABB5 S=6FE4 P=7B13 JMP 7B19 -Z-E- A=00 B=9200 D=A901 H=ABB5 S=6FE4 P=7B19 MVI C,01 -Z-E- A=00 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1B MOV A,L -Z-E- A=B5 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1C ANA H --M-I A=A1 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1D INR A --M-- A=A2 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1E RZ --M-- A=A2 B=9201 D=A901 H=ABB5 S=6FE4 P=7B1F PUSH H --M-- A=A2 B=9201 D=A901 H=ABB5 S=6FE2 P=7B20 LXI D,8BCC --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B23 CALL 76EB --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EB LDAX D --M-- A=03 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EC CMP M=02 ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE0 P=76ED RNZ ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B26 POP H ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B27 RNZ ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE6 P=7C98 CALL 7B16 ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B16 LHLD 8B9E ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B19 MVI C,01 ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1B MOV A,L ----I A=B5 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1C ANA H --M-I A=A1 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1D INR A --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1E RZ --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B1F PUSH H --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B20 LXI D,8BCC --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B23 CALL 76EB --M-- A=A2 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EB LDAX D --M-- A=03 B=9201 D=8BCC H=ABB5 S=6FE0 P=76EC CMP M=02 ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE0 P=76ED RNZ ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE2 P=7B26 POP H ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE4 P=7B27 RNZ ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE6 P=7C9B CALL 7C86 ----I A=03 B=9201 D=8BCC H=ABB5 S=6FE4 P=7C86 LHLD 8BAA ----I A=03 B=9201 D=8BCC H=0FEF S=6FE4 P=7C89 MVI C,03 ----I A=03 B=9203 D=8BCC H=0FEF S=6FE4 P=7C8B CALL 7969 ----I A=03 B=9203 D=8BCC H=0FEF S=6FE2 P=7969 INR C ----- A=03 B=9204 D=8BCC H=0FEF S=6FE2 P=796A DCR C ---EI A=03 B=9203 D=8BCC H=0FEF S=6FE2 P=796B RZ ---EI A=03 B=9203 D=8BCC H=0FEF S=6FE2 P=796C MOV A,H ---EI A=0F B=9203 D=8BCC H=0FEF S=6FE2 P=796D ORA A ---E- A=0F B=9203 D=8BCC H=0FEF S=6FE2 P=796E RAR C--E- A=07 B=9203 D=8BCC H=0FEF S=6FE2 P=796F MOV H,A C--E- A=07 B=9203 D=8BCC H=07EF S=6FE2 P=7970 MOV A,L C--E- A=EF B=9203 D=8BCC H=07EF S=6FE2 P=7971 RAR C--E- A=F7 B=9203 D=8BCC H=07EF S=6FE2 P=7972 MOV L,A C--E- A=F7 B=9203 D=8BCC H=07F7 S=6FE2 P=7973 JMP 796A C--E- A=F7 B=9203 D=8BCC H=07F7 S=6FE2 P=796A DCR C C---I A=F7 B=9202 D=8BCC H=07F7 S=6FE2 P=796B RZ C---I A=F7 B=9202 D=8BCC H=07F7 S=6FE2 P=796C MOV A,H C---I A=07 B=9202 D=8BCC H=07F7 S=6FE2 P=796D ORA A ----- A=07 B=9202 D=8BCC H=07F7 S=6FE2 P=796E RAR C---- A=03 B=9202 D=8BCC H=07F7 S=6FE2 P=796F MOV H,A C---- A=03 B=9202 D=8BCC H=03F7 S=6FE2 P=7970 MOV A,L C---- A=F7 B=9202 D=8BCC H=03F7 S=6FE2 P=7971 RAR C---- A=FB B=9202 D=8BCC H=03F7 S=6FE2 P=7972 MOV L,A C---- A=FB B=9202 D=8BCC H=03FB S=6FE2 P=7973 JMP 796A C---- A=FB B=9202 D=8BCC H=03FB S=6FE2 P=796A DCR C C---I A=FB B=9201 D=8BCC H=03FB S=6FE2 P=796B RZ C---I A=FB B=9201 D=8BCC H=03FB S=6FE2 P=796C MOV A,H C---I A=03 B=9201 D=8BCC H=03FB S=6FE2 P=796D ORA A ---E- A=03 B=9201 D=8BCC H=03FB S=6FE2 P=796E RAR C--E- A=01 B=9201 D=8BCC H=03FB S=6FE2 P=796F MOV H,A C--E- A=01 B=9201 D=8BCC H=01FB S=6FE2 P=7970 MOV A,L C--E- A=FB B=9201 D=8BCC H=01FB S=6FE2 P=7971 RAR C--E- A=FD B=9201 D=8BCC H=01FB S=6FE2 P=7972 MOV L,A C--E- A=FD B=9201 D=8BCC H=01FD S=6FE2 P=7973 JMP 796A C--E- A=FD B=9201 D=8BCC H=01FD S=6FE2 P=796A DCR C CZ-EI A=FD B=9200 D=8BCC H=01FD S=6FE2 P=796B RZ CZ-EI A=FD B=9200 D=8BCC H=01FD S=6FE4 P=7C8E INX H CZ-EI A=FD B=9200 D=8BCC H=01FE S=6FE4 P=7C8F RET *7C9E #G,7CAC ... (used G,7CAC to pass through iterative code) *7CAC #T -Z-E- A=00 B=0000 D=8BCC H=B1BD S=6FE6 P=7CAC LHLD 8B94 -Z-E- A=00 B=0000 D=8BCC H=A8E0 S=6FE6 P=7CAF MOV M,A -Z-E- A=00 B=0000 D=8BCC H=A8E0 S=6FE6 P=7CB0 LHLD 8BAE -Z-E- A=00 B=0000 D=8BCC H=FFFF S=6FE6 P=7CB3 XCHG -Z-E- A=00 B=0000 D=FFFF H=8BCC S=6FE6 P=7CB4 LHLD 8B9C -Z-E- A=00 B=0000 D=FFFF H=AFBF S=6FE6 P=7CB7 MOV M,E -Z-E- A=00 B=0000 D=FFFF H=AFBF S=6FE6 P=7CB8 INX H -Z-E- A=00 B=0000 D=FFFF H=AFC0 S=6FE6 P=7CB9 MOV M,D ... (used TW to enter and pass through the call) -Z-E- A=00 B=0000 D=FFFF H=AFC0 S=6FE6 P=7CBA CALL 774C -Z-E- A=00 B=0000 D=FFFF H=A8DF S=6FE6 P=7CBD LHLD 8B8E -Z-E- A=00 B=0000 D=FFFF H=A8D9 S=6FE6 P=7CC0 MVI M,04 -Z-E- A=00 B=0000 D=FFFF H=A8D9 S=6FE6 P=7CC2 INX H -Z-E- A=00 B=0000 D=FFFF H=A8DA S=6FE6 P=7CC3 MVI M,00 ... (used TW to enter and pass through the call) -Z-E- A=00 B=0000 D=FFFF H=A8DA S=6FE6 P=7CC5 CALL 7B9D -Z-E- A=00 B=0000 D=FFFF H=FFFF S=6FE6 P=7CC8 LHLD 8BA2 -Z-E- A=00 B=0000 D=FFFF H=FFFF S=6FE6 P=7CCB SHLD 8BD3 -Z-E- A=00 B=0000 D=FFFF H=FFFF S=6FE6 P=7CCE MVI C,FF ... (used TW to enter and pass through the call) -Z-E- A=00 B=00FF D=FFFF H=FFFF S=6FE6 P=7CD0 CALL 7BA4 ... (used TW to enter and pass through the call) -Z-E- A=00 B=00FF D=0000 H=0000 S=6FE6 P=7CD3 CALL 7B94 *7CD6 =========================================================================================
Same behavior. Now selecting C again...
========================================================================================= #G D>C: 01 PASS AAFD ----- A=01 B=0002 D=0201 H=0003 S=6FE0 P=AAFD MOV A,C ----- A=02 B=0002 D=0201 H=0003 S=6FE0 P=AAFE STA ABAB ----- A=02 B=0002 D=0201 H=0003 S=6FE0 P=AB01 MOV L,C ----- A=02 B=0002 D=0201 H=0002 S=6FE0 P=AB02 MVI H,00 ----- A=02 B=0002 D=0201 H=0002 S=6FE0 P=AB04 DAD H ----- A=02 B=0002 D=0201 H=0004 S=6FE0 P=AB05 LXI B,929B ----- A=02 B=929B D=0201 H=0004 S=6FE0 P=AB08 DAD B ----- A=02 B=929B D=0201 H=929F S=6FE0 P=AB09 MOV A,M ----- A=B4 B=929B D=0201 H=929F S=6FE0 P=AB0A INX H ----- A=B4 B=929B D=0201 H=92A0 S=6FE0 P=AB0B MOV H,M ----- A=B4 B=929B D=0201 H=A8A0 S=6FE0 P=AB0C MOV L,A ----- A=B4 B=929B D=0201 H=A8B4 S=6FE0 P=AB0D ORA H --M-- A=BC B=929B D=0201 H=A8B4 S=6FE0 P=AB0E RZ --M-- A=BC B=929B D=0201 H=A8B4 S=6FE0 P=AB0F MOV A,E --M-- A=01 B=929B D=0201 H=A8B4 S=6FE0 P=AB10 ANI 01 ----- A=01 B=929B D=0201 H=A8B4 S=6FE0 P=AB12 JNZ AB2B ----- A=01 B=929B D=0201 H=A8B4 S=6FE0 P=AB2B RET (back to BDOS) ----- A=01 B=929B D=0201 H=A8B4 S=6FE2 P=7703 MOV A,H ----- A=A8 B=929B D=0201 H=A8B4 S=6FE2 P=7704 ORA L *7705 #G C> =========================================================================================
Notice that [E] is 01 at seldsk entry. This is set within BDOS, which makes the code not even run the login function. So since I have the IDE drive selection login in the login function, the drive is never actually selected. But BDOS thinks it has been selected and changes drive letter. Totally wrong.
Now let's select the D drive again and watch the flow.
========================================================================================= C>D: 01 PASS AAFD ----- A=01 B=0003 D=0301 H=0001 S=6FE0 P=AAFD MOV A,C *AAFE =========================================================================================
See that [E] is 01 here too. However, since everything still points to the D drive, it's OK not to select the drive. It's already selected.
The (least significant) login bit in register [E] is set in BDOS and cannot be directly accessed in BIOS. Looking into BDOS, I see the "initialize" function clears data/dir buffers and the media change flag.
See the BDOS code snippet below to see why:
========================================================================================= initialize: call test$media$flag! mvi m,0 ; Reset media change flag call discard$data call discard$dir test$media$flag: lhld lsn$add! inx h! mov a,m! ora a! ret discard$data: lhld dtabcba! jmp discard discard$dir: lhld dirbcba discard: mvi c,1 discard0: mov a,l! ana h! inr a! rz disk$select: ; Select disk info for subsequent input or output ops sta adrive disk$select1: ; called by deblock mov m,a ; curdsk = seldsk or adrive mov d,a ; Save seldsk in register D for selectdisk call lhld dlog! call test$vector ; test$vector does not modify DE mov e,a! push d ; Send to seldsk, save for test below call selectdisk! pop h ; Recall dlog vector jnc sel$error ; returns with C flag set if select ok ; Is the disk logged in? dcr l ; reg l = 1 if so ret selectdisk: ; Select the disk drive given by register D, and fill ; the base addresses curtrka - alloca, then fill ; the values of the disk parameter block mov c,d ; current disk# to c ; lsb of e = 0 if not yet logged - in call seldskf ; hl filled by BIOS call ; hl = 0000 if error, otherwise disk headers mov a,h! ora l! rz ; Return with C flag reset if select error ; Disk header block address in hl mov e,m! inx h! mov d,m! inx h ; de=.tran shld cdrmaxa! inx h! inx h ; .cdrmax shld curtrka! inx h! inx h ; hl=.currec shld curreca! inx h! inx h ; hl=.buffa inx h! shld drvlbla! inx h shld lsn$add! inx h! inx h ; de still contains .tran xchg! shld tranv ; .tran vector lxi h,dpbaddr ; de= source for move, hl=dest mvi c,addlist! call move ; addlist filled ; Now fill the disk parameter block lhld dpbaddr! xchg ; de is source lxi h,sectpt ; hl is destination mvi c,dpblist! call move ; data filled ; Now set single/double map mode lhld maxall ; largest allocation number mov a,h ; 00 indicates < 255 lxi h,single! mvi m,true ; Assume a=00 ora a! jz retselect ; high order of maxall not zero, use double dm mvi m,false retselect: ; C flag set indicates successful select stc! ret =========================================================================================
This shows that the login function - called by selectdisk - is really more of a one-time initialization than it is a disk select function. It really shouldn't be used to select the drive. That should be done by examining @ADRV and/or @RDRV any time a drive is accessed, e.g. during the read and write functions.
So I'm moving the IDE "select" calls into the read and write functions. At the beginning of read and write, I'll examine @ADRV and write that to the drive-select port on the IDE interface. The login functions are just no-ops, straight back returns.
That solved the directory confusion. It wasn't actually "directory confusion" but rather was drive-select confusion. Once I moved the drive-selection logic into the beginning of the read and write functions, everything worked as it should.
Gencpm should be configured to overlay C and D directory and data buffers. CP/M keeps track of the buffers and keeps things straight.
The resulting version of CP/M supports two 330Kb diskette drives and two 8Mb IDE drives, which can be magnetic drives or compact flash (CF) solid state cards. The diskettes are A and B and the IDE drives are C and D.
Additionally, the translation layer for the IDE drives breaks them into 8Mb segments, which can be easily addressed individually using the most-significant byte of the two-byte track address. The tracks are addressed as 0000-FFFF and sectors as 0000-003F. The first 8Mb segment is tracks 0000-00FF, and that is the segment that is accessed by CP/M. The second segment is tracks 0100-01FF, third segment is 0200-02FF, and so on, up to track FFFF for 2Gb total storage.
This additional storage can be accessed using the IDEutil program, included in the distribution archive, below:
Resources: