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 / ZSYS / SIMTEL20 / SYSLIB / SLIB2.LBR / SFRENAME.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  78 lines

  1. ;
  2. ; SYSLIB Module Name:  SRENAME
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  3.6
  5. ; Module Version Number:  1.1
  6.  
  7.     public    f$rename
  8.  
  9. ;
  10. ;  F$REN -- RENAME FILES
  11. ;    THIS ROUTINE RENAMES THE OLD FILE PTED TO BY DE TO THE NEW FILE
  12. ; PTED TO BY HL; ONLY THE FN AND FT FIELDS OF THE FCB PTED TO ARE USED,
  13. ; AND THE POINTERS POINT TO THE USER NUMBERS, SO FULL FCB'S ARE NOT NECESSARY.
  14. ; ONLY THE FIRST 12 BYTES OF AN FCB ARE REQUIRED
  15. ;
  16. ;    ON ENTRY, HL PTS TO NEW FILE NAME, DE PTS TO OLD FILE NAME
  17. ;    ON EXIT, ZERO FLAG SET (Z) MEANS ERROR (FILE NOT FOUND)
  18. ;
  19.  
  20. ;
  21. ;  EXTERNALS
  22. ;
  23.     EXT    BDOS
  24.     EXT    FILLB
  25.     EXT    MOVEB
  26.  
  27. ;
  28. ;  ROUTINE
  29. ;
  30. F$RENAME:
  31.     JP    START
  32.  
  33. ;
  34. ;  FCB FOR RENAME
  35. ;
  36. RENFCB:
  37.     DS    36    ; JUST NEED THE SPACE
  38.  
  39. ;
  40. ;  START OF ROUTINE
  41. ;
  42. START:
  43.     PUSH    HL    ; SAVE REGS
  44.     PUSH    DE
  45.     PUSH    BC
  46.     PUSH    DE    ; SAVE OLD NAME PTR
  47.     PUSH    HL    ; SAVE NEW NAME PTR
  48.     LD    HL,RENFCB    ; INIT THE FCB
  49.     XOR    A    ; STORE ZEROES
  50.     LD    B,36    ; 36 BYTES
  51.     CALL    FILLB
  52.     POP    HL    ; GET PTR TO NEW NAME
  53.     LD    DE,RENFCB+17    ; PT TO FN PART OF FCB2
  54.     INC    HL    ; PT TO FN
  55.     LD    B,11    ; 11 BYTES
  56.     CALL    MOVEB
  57.     POP    HL    ; PT TO 1ST FN
  58.     LD    DE,RENFCB+1    ; PT TO FN PART OF FCB1
  59.     INC    HL    ; PT TO FN
  60.     LD    B,11    ; 11 BYTES
  61.     CALL    MOVEB
  62.     LD    DE,RENFCB    ; DO THE RENAME
  63.     LD    C,23    ; BDOS FCT 23
  64.     CALL    BDOS
  65.     POP    BC    ; RESTORE REGS
  66.     POP    DE
  67.     POP    HL
  68.     CP    0FFH    ; ERROR?
  69.     JP    Z,RENERR
  70.     LD    A,0FFH    ; SET NO ERROR
  71.     OR    A    ; SET FLAGS
  72.     RET
  73. RENERR:
  74.     XOR    A    ; SET ERROR
  75.     RET
  76.  
  77.     END
  78.