home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol090 / sfrename.mac < prev    next >
Encoding:
Text File  |  1984-04-29  |  1.4 KB  |  81 lines

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