home *** CD-ROM | disk | FTP | other *** search
-
- ;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
-