home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug014.ark / MOVE.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  123 lines

  1. ;FROM RICH ROTH
  2. ;TSA SOFTWARE
  3. ;TERRAN SIETCH ASSOCIATES
  4. ;5 NORTH SALEM RD.
  5. ;RIDGEFIELD
  6. ;CONN 06877  (203) 438-3954
  7. ;
  8. ;
  9. ;    MOVE <TO FILE> <FROM FILE>
  10. ;
  11. ;        RLR UTILITY 2/25/77 REV 0.0
  12. ;
  13.     ORG    100H
  14.     LXI    SP,STAK
  15.     LDA    FCBTO+1    ; CHECK FIRST CHAR FOR SPACE
  16.     CPI    SPC
  17.     JZ    HELP    ; PRINT HELP MSG IF NO FILES SPECIFIED
  18. ;
  19.     LXI    H,FCBFR
  20.     LXI    D,FCB2
  21.     MVI    B,16    ;   MOVE FROMNAME (IN FCB2)
  22. MNLP:    LDAX    D    ;     -> FCBFR
  23.     MOV    M,A
  24.     INX    H
  25.     INX    D
  26.     DCR    B
  27.     JNZ    MNLP
  28. ;
  29.     LXI    D,FCBFR        ; OPEN(FCBFR)
  30.     CALL    FOPN
  31. ;
  32.     LXI    D,FCBTO        ; NEW(FCBTO)
  33.     CALL    FNEW
  34. ;
  35. MVLP:    LXI    D,FCBFR    ; REPEAT
  36.     MVI    C,20
  37.     CALL    BDOS        ; READ(FCBFR)
  38.     CPI    1
  39.     JZ    MVEOF        ; EXIT IF EOF(FCBFR)
  40. ;
  41.     LXI    D,FCBTO
  42.     MVI    C,21
  43.     CALL    BDOS        ; WRITE(FCBTO)
  44.     ORA    A
  45.     JZ    MVLP    ; UNTIL WRITE ERR(FCBTO)
  46. ;
  47.     LXI    D,EXNERR
  48.     CPI    1        ; WRITE ERROR
  49.     JZ    ABORT
  50. ;
  51.     LXI    D,OOSERR    ; OUT OF SPACE
  52. ;
  53. ABORT:    CALL    PRINT
  54.     MVI    C,0
  55.     CALL    BDOS
  56.     HLT
  57. ;
  58. MVEOF:            ; MOVE DONE
  59.     LXI    D,FCBTO
  60.     MVI    C,16
  61.     CALL    BDOS        ; CLOSE(FCBTO)
  62.  
  63.     LXI    D,MOVDNE
  64.     JMP    ABORT
  65. ;
  66. EXNERR:    DB    'WRITE ERROR',CR,LF,DLR
  67. OOSERR:    DB    ' OUT OF DISK (OR DIRECTORY) SPACE',CR,LF,DLR
  68. MOVDNE:    DB    '        MOVE DONE',CR,LF,DLR
  69. ;
  70. ;    CREATE NEW FILE & OPEN
  71. ;
  72. FNEW:    PUSH    D
  73.     MVI    C,19
  74.     CALL    BDOS    ; DELETE(FCB)
  75.     POP    D
  76.     PUSH    D
  77.     MVI    C,22
  78.     CALL    BDOS    ; CREATE(FCB)
  79.     POP    D
  80.     CPI    255
  81.     JNZ    FOPN    ; IF CREATE OK THEN OPEN(FCB)
  82.     LXI    D,OOSERR        ; ELSE ABORT(OUT OF SPACE)
  83.     JMP    ABORT
  84.  
  85. ;
  86. ;    OPEN FILE
  87. ;        DE^=FCB
  88. FOPN:    MVI    C,15
  89.     CALL    BDOS
  90.     CPI    255
  91.     RNZ        ; OPEN OK
  92. ;
  93.     LXI    D,FNFERR
  94.     JMP    ABORT
  95. FNFERR:    DB    'FILE NOT FOUND',CR,LF,DLR
  96. ;
  97. ;
  98. ;
  99. HELP:    LXI    D,HELPMSG
  100.     JMP    ABORT
  101. HELPMSG:    DB    'MOVE <TOFILE> <FROMFILE>',CR,LF
  102.         DB    '     E.G.  MOVE NEWFILE OLDFILE ',CR,LF,DLR
  103. ;
  104. ;
  105. ;    PRINT (MSG)
  106. ;        DE^=MSG TERMIATED BY '$'
  107. PRINT:    MVI    C,9
  108.     JMP    BDOS
  109.  
  110. ;    CONSTANTS
  111. CR    EQU    13
  112. LF    EQU    10
  113. DLR    EQU    '$'
  114. SPC    EQU    20H
  115. BDOS    EQU    5
  116. FCBTO    EQU    5CH    ; CP/M FCB 1
  117. FCB2    EQU    6CH
  118. ;
  119. FCBFR:    DS    32
  120.     DB    0
  121.     DS    30    ; STACK
  122. STAK:    DS    0
  123.