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

  1. OPSYS      EQU  32    ; OPSYS SIZE IN 'K'
  2.     ;          DISK LOAD/SAVE FOR MITS BASIC 3.2
  3. ;            REPLACES  CLOAD/CSAVE
  4. ;
  5. ;
  6. OPSIZ      EQU  (OPSYS-16)*1024
  7. DCODE1     EQU  1007H
  8. POS1       EQU  1A4H         ;   JMP TABLE
  9. POS2       EQU  0EDH         ;   MNUEONICS
  10. DSKSP      EQU  2720H+OPSIZ
  11.            ORG  DSKSP
  12. FSAV:      DS   3
  13. FOPN:      DS   3
  14. GETFILE:   DS   3
  15. TMPBUFF:   DS   3
  16. DLDX1:     DS   3         ; FINISH OFF DLOAD
  17.            DS   6
  18. BDOS:      DS   11
  19. AFCB:      DS   0
  20. ;
  21. QUOTE      EQU  22H
  22. ;
  23.            ORG  POS1
  24.            DW   DLOAD,DSAVE
  25. ;
  26.            ORG  POS2
  27.            DB   'DLOA','D'+80H,'DSAV','E'+80H
  28. ;
  29. ;
  30. SWKSP      EQU  243H
  31. EWKSP      EQU  245H
  32. NEW        EQU  3A2H
  33. FERR       EQU  2D4H
  34. BADNAE     EQU  2         ; SYNTAX ERROR
  35. OMERR      EQU  2C1H
  36. ;
  37. ;
  38.            ORG  DCODE1
  39. DSAVE:     CALL GETFILE
  40.            PUSH H
  41.            CALL TMPBUFF
  42. ;
  43.            MVI  C,19       ; DELETE OLD FILE
  44.            LXI  D,AFCB
  45.            PUSH D
  46.            CALL BDOS
  47.            POP  D
  48.            PUSH D
  49.            MVI  C,22        ;  MAKE NEW FILE
  50.            CALL BDOS
  51. ;
  52.            CALL FOPN        ; OPEN FILE
  53. ;
  54.            LHLD SWKSP
  55.            PUSH H            ; START OF WORKSPACE
  56. ;
  57. DSVLP:     POP  D
  58.            PUSH D
  59.            MVI  C,26
  60.            CALL BDOS         ; SET BUFF PTR
  61.            POP  H
  62.            POP  D         ;  (D=FCB , H=BUFF PTR)
  63.            PUSH D
  64.            PUSH H
  65.            MVI  C,21
  66.            CALL BDOS      ; WRITE TO DISK
  67. ;
  68.            POP  H
  69.            LXI  D,80H
  70.            DAD  D
  71.            PUSH H
  72.            XCHG          ; DE=BUFF
  73.            LHLD EWKSP     ; HL=END OF WORKSPACE
  74.            RST  4       ; HL-DE (ONLY SET FLAGS(
  75.            JNC   DSVLP
  76. ;
  77. ;
  78. FCLOS:     POP  H          ; CLOSE FILE AND RESET CP/M TEMPS
  79.            CALL TMPBUFF
  80.            POP  D
  81. FCLOSX:    MVI  C,16
  82.            CALL BDOS       ;  FILE CLOSE
  83.           ;
  84.            CALL FSAV      ; RESTORE FTMP BLOCK
  85. ;
  86.            POP  H
  87.            RET
  88. ;
  89. ;
  90. ;                DLOAD ,IT BACK IN ?
  91. DLOAD:     CALL GETFILE
  92.            PUSH H
  93.            CALL TMPBUFF      ; TEMP DISK BUFF (FOR OPEN)
  94.            CALL NEW       ; CLEAR WORKSPACE
  95. ;
  96.            LXI  D,AFCB
  97.            PUSH D
  98.            CALL FOPN        ;  OPEN FILE
  99. ;
  100.            LHLD SWKSP
  101.            PUSH H
  102. DLDLP:     POP  D
  103.            PUSH D
  104.            MVI  C,26
  105.            CALL BDOS        ; SET BUFF PTR
  106.            POP  H
  107.            POP  D
  108.            PUSH D
  109.            PUSH H
  110.            MVI  C,20
  111.            CALL BDOS       ; READ DATA
  112.            ORA  A
  113.            JNZ  DLDX1      ; EOF (OR ERROR)
  114. ;
  115.            POP  H
  116.            LXI  D,80H
  117.            DAD  D
  118.            PUSH H
  119.            XCHG
  120.            LXI  H,-28H-0A0H
  121.            DAD  SP
  122.            RST  4
  123.            JNC   DLDLP
  124. ;                          MEMORY OVERFLOW
  125.            POP  H
  126.            POP  D          ; D=FCB
  127.            CALL FSAV
  128.            CALL NEW        ; DON'T LEAVE JUNK AROUND
  129.            POP  H         ;   H=CHAR PTR
  130.            JMP  OMERR     ;      MEMORY ERROR
  131. ;             ALL DONE
  132. ;
  133. ;                  USE CP/M BIOS FOR ALL A/O
  134. CONST      EQU  3E06H+OPSIZ
  135. CONIN      EQU  CONST+3
  136. CONOUT     EQU  CONST+6
  137. ;
  138.            ORG  4D0H
  139.            POP  PSW
  140.            PUSH PSW
  141.            PUSH B
  142.            MOV  C,A
  143.            CALL CONOUT
  144.            POP  B
  145.            POP  PSW
  146.            RET
  147. ;
  148.            ORG  4DBH
  149.            CALL CONIN
  150.            DB   0,0,0,0,0,0
  151. ;
  152.            ORG  58DH
  153.            CALL CONST
  154.            ORA  A
  155.            CNZ  5EEH
  156. ;
  157.            ORG  5E9H
  158.            CALL CONST
  159.            ORA  A
  160.            RZ
  161. ;
  162. ;             AUTOMATIC INITIALIZATTION AND ADVERTISING
  163. ;
  164.            ORG  1
  165.            JMP  177EH
  166. ;
  167.            ORG  1832H
  168.            LXI  H,DSKSP-130    ; MEM SIZE:= JUST BELOW DISK BUFFER
  169.            JMP  1865H
  170. ;
  171.            ORG  1867H
  172.            JMP  189CH          ; WIDTH :=DEFAULT (72)
  173. ;
  174.            ORG  18ACH
  175.            LXI  D,1774H       ; DO YOU WANT ... ? := YES (ALL TRIG FUNCTIONS
  176.            JMP  18E2H
  177. ;
  178. EOS        EQU  0A0H
  179.            ORG  1935H
  180.            DB     0DH,0AH,'MODIFIED FOR CP/M DISK BY BYTE OF PALO ALTO',EOS
  181.            DB     0,0
  182. ;
  183.            ORG  19A5H     ; WHO AM I??
  184.            DB   0DH,0AH,' 8K MOD 0.2 FOR 24K CP/M ',EOS
  185.