; In ZCMD29 and ZCMD30B ( and maybe earlier versions), the REN internal, ; when executed with: ; ; REN FN.EXT=FN1.EXT ; ; had the quirk of asking for deletion of FN.EXT (if it existed) before ; it checked for existence of FN1.EXT. Well, needless to say if ; FN1 did not exist, you ended up deleting FN before you ever found out ; about it. ; ; Thanks to Bob Kramer of RI-RCPM for pointing this out to me. ; Eugene Nolan ; 5/27/88 ; The following is a cut of the code to replace for EXTEST and REN ; in ZCMD29/30B if you use the internal REN facility. SAVE internal will ; still function normally. ;..... ; ; ; Test file in FCB for existence, ask user to delete if so, and abort if ; he chooses not to. ; IF SAVEON OR RENON ; For save and ren functions EXTEST: CALL EXTEST2 RZ ; Ok if not found EXTEST1: PUSH D ; Save pointer to FCB PUSH D CALL PRINTC DB 'Erase',' '+80H POP H ; H now points at FCBDx INX H ; up to name field CALL PRFN ; Print it MVI A,'?' ; Print question CALL CONOUT CALL CONIN ; Get response POP D ; Get ptr to fcb CPI 'Y' ; Key on yes JNZ ERR3 ; Restart as error if no PUSH D ; Save ptr to fcb CALL DELETE ; Delete file POP D ; Get ptr to fcb RET EXTEST2: CALL SCANLOG ; Extract file name and log in user/disk JNZ ERROR ; '?' is not permitted CALL SEARF ; Look for specified file LXI D,FCBDN ; Point to file FCB RET ENDIF ; SAVEON OR RENON ;..... ; ; ; Section: 5F ; Command: REN ; Function: To change the name of an existing file ; Forms: ; REN = perform function ; IF RENON ; REN enabled? REN: IF WREN ; Wheel facility? CALL WHLCHK ; Check for wheel byte ENDIF ; WREN ; CALL EXTEST2 ; Test for existence only PUSH PSW ; save flags to say yes/no LDA TEMPDR ; Save selected disk PUSH PSW ; Save on stack ; REN0: LXI H,FCBDN ; Save new file name LXI D,FCBDM LXI B,16 ; 16 bytes LDIR CALL ADVAN ; Advance to next character (non-delim) JRZ REN4 ; Error if none ; ; ; Perform rename function ; REN1: SDED NXTCHR ; Save pointer to old file name CALL SCANER ; Extract FILENAME.TYP token JRNZ REN4 ; Error if any '?' POP PSW ; Get old default drive MOV B,A ; Save it LXI H,TEMPDR ; Compare it against selected drive MOV A,M ; Default? ORA A JRZ REN2 CMP B ; Check for drive error JRNZ REN4 ; REN2: MOV M,B XRA A STA FCBDN ; Set default drive POP PSW ; Get back existence flag JRZ REN2A ; Z=none CALL SEARF ; Look for source file JRZ REN3 ; Z=not here LXI D,FCBDM ; Source and destination both here, query erase CALL EXTEST1 REN2A: LXI D,FCBDN ; Rename file MVI C,17H ; BDOS rename FCT CALL GRBDOS RNZ ; REN3: CALL PRNNF ; Print NO FILE message ; REN4: JMP ERROR ENDIF ; RENON ;