;EDIR AS OF 11/28/87 ;COPYRIGHT (C) 1987 BY ROBERT GREENLEE, P.O. BOX 23286, SAN DIEGO CA 92123 ;PHONE VOICE 619-268-0112 ; MODEM 619-569-8613. ; ;THIS PROGRAM LOGS YOU INTO THE ERASED FILE DIRECTORY ON A CP/M 2.2 ; COMPUTER DISK AND CHANGES THE CP/M ERA COMMAND SO THAT IT UNERASES FILES ; AND CAUSES THE REN COMMAND TO RENAME JUST ONE DUPLICATE FILE ; INSTEAD OF ALL FILES HAVING THE SAME NAME. YOU CAN USE ; THE CP/M DIR COMMAND TO SEE WHICH FILES ON A DISK ARE ERASED. ; ;THE NAME EDIR STANDS FOR FOR "ERASED DIRECTORY" WHICH IS SHORT FOR ; "ERASED FILE DIRECTORY." ; ;ON MOST COMPUTERS THE PROGRAM ONLY LASTS UNTIL THE NEXT WARM BOOT. ; ;TO CREATE THE EDIR.COM FILE FROM THIS SOURCE USE ASM.COM AND LOAD.COM ; LIKE SO: ; ; A>ASM EDIR ; A>LOAD EDIR ; ; ORG 0100H JMP START MESSAGE: DB 0DH,0AH DB 'EDIR v1.0 (C) 1987 by Robert Greenlee, P.O. Box 23286,',0DH,0AH DB 'San Diego CA 92123. 619-268-0112 Voice, Modem 619-569-8613.',0DH,0AH DB 'Please send for free CP/M & MSDOS product listings.',0DH,0AH DB 0DH,0AH DB 'You are now logged into the mystical Erased File Directory.',0DH,0AH DB 'While in this directory the ERA command will unerase files.',0DH,0AH DB 'To see which files are erased on this disk you can use DIR.',0DH,0AH DB 'You may also use the TYPE command to view the erased files.',0DH,0AH DB 'From here REN can change duplicate filenames one at a time.',0DH,0AH DB 'Refer to EDIR.DOC for more information.',0DH,0AH DB 0DH,0AH DB 'On most computers you can usually exit back to normal space',0DH,0AH DB 'by typing Control-C to cause a Warm Boot. Good luck.',0DH,0AH DB '$' SAYOOPS: DB 0DH,0AH DB 'Oh darn nothing happened! It seems you''re not using the real',0DH,0AH DB 'CP/M 2.2 BDOS which EDIR v1.0 needs in order for it to work.',0DH,0AH DB '$' START: LHLD 1 ;GET START OF BIOS (EG.'S BELOW ASSUME EA00) DCR H ;GO DOWN INTO BDOS DCR H MVI L,7FH ;POINT TO CP/M 2.2 VERSION NUMBER, 22H (EG. E87F) MVI A,22H CMP M MVI C,9 ;IF NOT CP/M 2.2 BDOS THEN SAY SO AND ABORT. LXI D,SAYOOPS JNZ 5 ; NOW UPDATE CODE LISTS BELOW WITH REAL MSB OF BDOS MEMORY LOCATIONS MOV A,H STA LIST2A ;EG. E8 SUI 4 STA LIST1A ;EG. E4 DCR A ;;;STA LIST1B ;EG. E3. DON'T INCLUDE THIS IF YOU WANT TO BE ; ABLE TO unERA AMBIGUOUS FILENAMES (LIKE ERA *.*). STA LIST1D SUI 2 ;EG. E1 PUSH PSW SUI 2 ;EG. DF STA LIST1C ;MSB OF ADDR OF USERNO IN BDOS ; MVI L,59H ;EG. HL=E859 LXI D,LIST1 MVI B,LIST2-LIST1 CALL BMOVEL POP PSW MOV H,A MVI L,48H ;EG. HL=E148 ;;;LXI D,LIST2 ;DON'T NEED THIS SINCE DE ALREADY POINTS TO LIST2 MVI B,LIST3-LIST2 CALL BMOVEL MVI C,9 LXI D,MESSAGE JMP 5 ;DISPLAY SIGNON MESSAGE AND RETURN TO CCP BMOVEL: LDAX D MOV M,A INX D INX H DCR B JNZ BMOVEL RET ;ROUTINE IN LIST1 REPLACES AUTOSEL ROUTINE ;EG. E859 LIST1: MVI M,0E5H ;SET USERS FCB BYTE 0 TO E5H FOR ERASED FILES ONLY DB 3AH ;LDA USERNO (GET CURRENT USER NUMBER INTO A). DB 41H LIST1C: DB 0 ;EG. DF41 DB 32H ;STA. MAKES ERA ROUTINE USE CUR. USER NUMBER INSTEAD OF E5. DB 0AFH LIST1D: DB 0 ;EG. E3AF ;; ;RESET THE "JUST ONE FILE PLEASE" TRICK IN ERA/REN ROUTINES MVI A,0C8H DB 01H ;OPCODE FOR LXI B ;IF ENTRY IS MADE AT POKEC9 THEN "JUST ONE" TRICK GOES INTO EFFECT POKEC9: MVI A,0C9H POKEC: DB 32H DB 2AH ;CAUSES RENAME COMMAND TO STOP AFTER ONE FILE LIST1A: DB 0 ;EG. E42A ;;;DB 32H ;CAUSES ERA COMMAND TO STOP AFTER ONE FILE ;;;DB 0A7H ; WHICH ALSO MEANS NO ERA *.* ETC. ALLOWED. ;;;LIST1B: DB 0 ;EG. E3A7 RET ;;; ;ROUTINE IN LIST2 REPLACES "CHECK FOR READ ONLY FILE ROUTINE" ; WHICH IS CALLED BEFORE DIRECTORY WRITE TAKES PLACE ;EG. E148 LIST2: DB 0FH ;LOOK AT 16TH BYTE IN DIRECTORY DB 0 DAD D MOV A,M DCR A ;DECREMENT IT (IF E5H IT WILL GO TO E4H) RPE ;RETURNS ONLY IF ACCUMULATOR WAS 80H PRIOR TO DCR A ;IF ACC WAS E5H THEN THAT'S THE END OF DIRECTORY ;IF ACC WAS NOT E5H OR 80H THEN ALLOW THIS DIRECTORY ; ENTRY TO BE RENAMED/UNERASED BUT CAUSE THIS TO BE THE LAST ; DIRECTORY ENTRY FOR THIS FILE BY POKING RETURN OPCODES INTO ; REN AND ERA ROUTINES USING OUR POKEC9 ROUTINE CPI 0E5H-1 DB 0C2H ;OPCODE FOR JNZ (JUMPS IF NEITHER 80H OR E5H) DB POKEC9-LIST1+59H LIST2A: DB 0 ;EG. E864 ;OK IT WAS E5H SO PREVENT ANYTHING FROM HAPPENING TO THIS DIRECTORY ; ENTRY BY TERMINATING ERA/REN ROUTINES NOW. POP PSW ;TAKE RETURN OFF STACK AND TERMINATE ERA/REN ROUTINE ; (ACTUALLY ONLY ERA COULD EVER BE TERMINATED SINCE ; REN DOESN'T ACCEPT AMBIGUOUS FILENAMES). RET LIST3 EQU $ END