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

  1. OPSYS      EQU    32        ;  SIZE OF OPSYS IN 'K'
  2. BLOCKS     EQU    (OPSYS-6)*4-1        ; NUMBER OF BLOCKS TO SAVE 
  3. ;                CONVERT TO DECIMAL ***
  4. ;
  5. ;    HI HALF OF BASIC# FOR MITS 8K 3.2 BASIC
  6. ;
  7. OPSIZ      EQU    (OPSYS-16)*1024
  8. BOFF       EQU    103H     ; LOAD OFFSET FOR BASIC
  9. POS3       EQU   49H+BOFF         ;   USR(0) ENTRY
  10. RST7       EQU  38H+BOFF
  11. SWKSP      EQU  243H
  12. EWKSP      EQU  245H
  13. DSKSP      EQU  2720H+OPSIZ
  14. TBUFF      EQU  DSKSP-128
  15. QUOTE      EQU  22H
  16. DDT        EQU  3019H+OPSIZ
  17.            ORG  POS3
  18.            DW   REBOOT
  19.            ORG  RST7
  20.            JMP  DDT        ; BREAK POINT
  21. ;
  22. ;
  23. FERR       EQU   2D4H
  24. BADNAM     EQU   2      ;    SYNTAX ERROR
  25. UFERR      EQU  34       ; UNDEFIOOED FILE
  26.            ORG  100H     ;  STARTING POINT FOR CP/M
  27.            JMP  CPMSAV
  28. ;
  29. ;
  30.            ORG  DSKSP-28H      ; DISK WORK SPACE
  31. CPMSAV:    LXI  SP,CPMSAV
  32.            CALL FSAV
  33.            LHLD 1
  34.            SHLD BOOTX
  35.            LHLD 6
  36.            SHLD BDOSX
  37. ;                          MOVE BASIC DOWN
  38.            LXI  D,103H
  39.            LXI  H,0
  40.            LXI  B,1A00H      ; TOP OF BASIC
  41. DWNLP:     LDAX D
  42.            MOV  M,A
  43.            DCX  B
  44.            MOV  A,B
  45.            ORA  C
  46.            INX  D
  47.            INX  H
  48.            JNZ  DWNLP
  49.            JMP  0       ; GO DO YOUR THING
  50. ;;
  51. ;
  52. ;   *****   FROM HERE ON IS SACROSCANT !!!!!!!!  **** (TO GET BACK TO HEAVEN)
  53. ;
  54.            JMP  FSAV     ;   JMP TABLE  
  55.            JMP  FOPN
  56.            JMP  GETFILE
  57.            JMP  TMPBUFF
  58.            JMP  DLDX1       ; END OF DLOAD
  59. ;
  60. REBOOT:    CALL FSAV
  61.            DB   0C3H
  62. BOOTX:     DS   2        ;  JMP WARM START
  63. ;
  64. BDOS:      DB   0C3H
  65. BDOSX:     DS   2           ;  JMP BODS INST.
  66. FTMP:      DS   1  ;  SAVE LOC 4
  67. FTMPX:     DS   7  ;  SAVE LOC  40H-46H
  68. ;          DISK LOAD/SAVE FOR MITS BASIC 3.2
  69. ;            THIS PART SITS IN HI MEMORY B,ABOVE USER AREA
  70. ;
  71.                 ;
  72. AFCB:      DB   0            ; FME CONTROL BLOCK
  73. FNAM:      DS   8      ; NAME
  74.            DB   'MIT'  ; EXT.
  75. EX:        DS   2
  76. RCX:       DS   1
  77. FRC:       DS   1      ;  RECORD COUNT
  78.            DS   16     ; SYSTEM SPACE
  79. FNR:       DB   0      ; RECOORD NUMBER
  80. ;
  81. ;
  82. ;
  83. ;
  84. ;
  85. ;          SWAP (4,40H-406H)  WITH FTMP (DS 8)
  86. FSAV:      LXI  H,FTMP
  87.            LXI  D,4
  88.            LDAX D
  89.            MOV  B,M
  90.            MOV  M,A
  91.            MOV  A,B
  92.            STAX D
  93. ;
  94.            INX  H
  95.            LXI  D,40H
  96.            MVI  C,7
  97. ;
  98. FSAVX:     MOV  B,M
  99.            LDAX D
  100.            MOV  M,A
  101.            MOV  A,B
  102.            STAX D
  103.            INX  D
  104.            INX  H
  105.            DCR  C
  106.            JNZ  FSAVX
  107.            RET
  108. ;
  109. 3
  110. FOPN:      POP  H          ; CLEAR TRN ADR
  111.            POP  D          ; OPEN CPL/M FILE
  112.            PUSH D
  113.            PUSH H
  114.            MVI  C,15       ; FCB ON TOP
  115.            CALL BDOS
  116.            CPI  255
  117.            RNZ
  118. ;                      OPEN ERROR
  119.            CALL FSAV
  120.            MVI  E,UFERR
  121.            JMP  FERR
  122.            RET
  123. ;
  124. ;                      SETUP- FCB WITH FILENAME , ALSO CP/M TEMPS
  125. GETFILE:   LXI  D,BADNAM      ; D=0 ,E=BADNAME ERROR FLAG
  126.            LXI  B,FNAM
  127.            CPI  QUOTE
  128.            JNZ  FERR
  129. ;
  130. FOK:       RST  2
  131.            CPI  QUOTE
  132.            JZ   FDNE
  133.            ORA  A
  134.            JZ   FDNE      ; CR SHOWS AS 0
  135.            STAX B
  136.            INR  D
  137.            INX  B
  138.            MOV  A,D
  139.            CPI  8
  140.            JM   FOK
  141. ;
  142.            JMP  FERR     ; NAME TOO LONG
  143. ;
  144. FNDEX:     MVI  A,20H
  145.            STAX B
  146.            INX  B
  147.            INR  D
  148. FDNE:      MOV  A,D
  149.            CPI  8
  150.            JNZ  FNDEX
  151. ;
  152.            PUSH H
  153.            LXI  H,0
  154.            SHLD EX
  155.            SHLD RCX
  156.            XRA  A
  157.            STA  FNR      ;     START AT RECORD ZERO !!
  158. ;                         SET-UP FILE TEMP BLOCK
  159.  
  160.            CALL FSAV
  161.            POP  H
  162.            RET
  163. ;                         USE TEMP DSIK BUFF
  164. TMPBUFF:   LXI  D,TBUFF
  165.            MVI  C,26
  166.            CALL BDOS
  167.            RET
  168. ;                  END OF DLOAD - SET END OF WORKSPACE PTR
  169. DLDX1:     CALL FSAV
  170.            LHLD SWKSP
  171. DLDX2:     MOV  E,M
  172.            INX  H
  173.            MOV  D,M
  174.            INX  H
  175.            SHLD EWKSP
  176.            XCHG
  177.            MOV  A,H
  178.            ORA  L
  179.            JNZ  DLDX2       ; IF <>0 , NOT AT END OF WKSP
  180. ;
  181.            JMP  0      ; WAKE UP - LITTLE BASIC
  182.