home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / RCPM / ZCMDREN.FIX < prev    next >
Text File  |  2000-06-30  |  4KB  |  118 lines

  1. ; In ZCMD29 and ZCMD30B ( and maybe earlier versions), the REN internal,
  2. ; when executed with:
  3. ;
  4. ; REN FN.EXT=FN1.EXT
  5. ;
  6. ; had the quirk of asking for deletion of FN.EXT (if it existed) before
  7. ; it checked for existence of FN1.EXT. Well, needless to say if
  8. ; FN1 did not exist, you ended up deleting FN before you ever found out
  9. ; about it.
  10. ;
  11. ; Thanks to Bob Kramer of RI-RCPM for pointing this out to me.
  12.  
  13. ; Eugene Nolan
  14. ; 5/27/88
  15.  
  16.  
  17. ; The following is a cut of the code to replace for EXTEST and REN
  18. ; in ZCMD29/30B if you use the internal REN facility. SAVE internal will
  19. ; still function normally.
  20.  
  21. ;.....
  22. ;
  23. ;
  24. ; Test file in FCB for existence, ask user to delete if so, and abort if
  25. ; he chooses not to.
  26. ;
  27.          IF     SAVEON OR RENON ; For save and ren functions
  28. EXTEST: CALL    EXTEST2
  29.         RZ                      ; Ok if not found
  30. EXTEST1:
  31.         PUSH    D               ; Save pointer to FCB
  32.         PUSH    D
  33.         CALL    PRINTC
  34.         DB      'Erase',' '+80H
  35.         POP     H               ; H now points at FCBDx
  36.         INX     H               ; up to name field
  37.         CALL    PRFN            ; Print it
  38.         MVI     A,'?'           ; Print question
  39.         CALL    CONOUT
  40.         CALL    CONIN           ; Get response
  41.         POP     D               ; Get ptr to fcb
  42.         CPI     'Y'             ; Key on yes
  43.         JNZ     ERR3            ; Restart as error if no
  44.         PUSH    D               ; Save ptr to fcb
  45.         CALL    DELETE          ; Delete file
  46.         POP     D               ; Get ptr to fcb
  47.         RET
  48. EXTEST2:
  49.         CALL    SCANLOG         ; Extract file name and log in user/disk
  50.         JNZ     ERROR           ; '?' is not permitted
  51.         CALL    SEARF           ; Look for specified file
  52.         LXI     D,FCBDN         ; Point to file FCB
  53.         RET
  54.          ENDIF                  ; SAVEON OR RENON
  55. ;.....
  56. ;
  57. ;
  58. ; Section:  5F
  59. ; Command:  REN
  60. ; Function: To change the name of an existing file
  61. ; Forms:
  62. ;       REN <new UFN>=<old UFN> perform function
  63. ;
  64.          IF     RENON           ; REN enabled?
  65. REN:     IF     WREN            ; Wheel facility?
  66.         CALL    WHLCHK          ; Check for wheel byte
  67.          ENDIF                  ; WREN
  68. ;
  69.         CALL    EXTEST2         ; Test for existence only
  70.         PUSH    PSW             ; save flags to say yes/no
  71.  
  72.  
  73.         LDA     TEMPDR          ; Save selected disk
  74.         PUSH    PSW             ; Save on stack
  75. ;
  76. REN0:   LXI     H,FCBDN         ; Save new file name
  77.         LXI     D,FCBDM
  78.         LXI     B,16            ; 16 bytes
  79.         LDIR
  80.         CALL    ADVAN           ; Advance to next character (non-delim)
  81.         JRZ     REN4            ; Error if none
  82. ;
  83. ;
  84. ; Perform rename function
  85. ;
  86. REN1:   SDED    NXTCHR          ; Save pointer to old file name
  87.         CALL    SCANER          ; Extract FILENAME.TYP token
  88.         JRNZ    REN4            ; Error if any '?'
  89.         POP     PSW             ; Get old default drive
  90.         MOV     B,A             ; Save it
  91.         LXI     H,TEMPDR        ; Compare it against selected drive
  92.         MOV     A,M             ; Default?
  93.         ORA     A
  94.         JRZ     REN2
  95.         CMP     B               ; Check for drive error
  96.         JRNZ    REN4
  97. ;
  98. REN2:   MOV     M,B
  99.         XRA     A
  100.         STA     FCBDN           ; Set default drive
  101.         POP     PSW             ; Get back existence flag
  102.         JRZ     REN2A           ; Z=none
  103.         CALL    SEARF           ; Look for source file
  104.         JRZ     REN3            ; Z=not here
  105.         LXI     D,FCBDM         ; Source and destination both here, query erase
  106.         CALL    EXTEST1
  107. REN2A:
  108.         LXI     D,FCBDN         ; Rename file
  109.         MVI     C,17H           ; BDOS rename FCT
  110.         CALL    GRBDOS
  111.         RNZ
  112. ;
  113. REN3:   CALL    PRNNF           ; Print NO FILE message
  114. ;
  115. REN4:   JMP     ERROR
  116.          ENDIF                  ; RENON
  117. ;
  118.