Bridger Mitchell <bridger@Rand-Unix.ARPA> (02/02/85)
PUBPATCH *MUST* be installed on a STANDARD cp/m 2.2 bdos! Jan Steinman and Paul Kelley have both reported similar problems-- files disappearing from the disk directory following the first directory entry with 'E5' in byte 0. Paul's problem was that his Heath CP/M 2.2.03 was *NOT* a standard cp/m 2.2 bdos. It contained this patch, abstracted by Paul: ;Patch at BDOS+0DEEH - End of BDOS ;Come here from GETALOC when first byte marked erased ;Speeds up allocation calculation PATCH: INX H ;look at second byte CMP M JNZ GETA1 ;if not erase mark, assume file entry ; and continue checking directory RET ;else assume we have found the region of ; the directory not changed since formatting ; and quit checking ************************** As we said in Dr. Dobbs, and in the PUBPATCH.ASM source, PUBPATCH patch must be installed in a *COMPLETELY STANDARD CP/M 2.2 BDOS!* ************************** Please recheck your bdos. In the Heath case, Paul's version looked like this: Fragment from STANDARD BDOS2.2 routine to get the allocation vector ; GETA1: MVI C,0FFH ;set the exit code CALL NXTDIR ;set the next directory pointers CALL CHKCNT ;was there one? RZ ;return if not CALL PNTDIR ;point to the right spot ;HL now points to first byte of directory entry in DIRBUF MVI A,DELDAT ;get the file deleted mark CMP M ;is this what we see? JZ GETA1 ;keep looking for a nonempty block LDA USRCOD ;get the user byte CMP M ;test this against the first byte JNZ GETA2 ;if we don't match mark this block ---------------------------------------------------------------------- ;Fragment from HEATH BDOS2.2 routine to get the allocation vector ; GETA1: MVI C,0FFH ;set the exit code CALL NXTDIR ;set the next directory pointers CALL CHKCNT ;was there one? RZ ;return if not CALL PNTDIR ;point to the right spot ;HL now points to first byte of directory entry in DIRBUF MVI A,DELDAT ;get the file deleted mark CMP M ;is this what we see? ---> JZ PATCH ;TEST FOR FORMAT AREA LDA USRCOD ;get the user byte CMP M ;test this against the first byte JNZ GETA2 ;if we don't match mark this block --------------------------------------------------------------------- Jan: Please let me know if this is, in fact, the source of your problem. info-cpm list: The Heath code seems risky to me: Anyone who, e.g., uses DU to clear a bad directory entry to E5's will end up unwittingly wiping out the rest of his directory. --bridger mitchell