Subversion Repositories pentevo

Rev

Rev 691 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2.         PHASE 0F800H
  3. _RUN:   JP  RUN              ; MAIN MENU OF LOADER
  4. _CI:    JP  CI               ; CONSOL IN
  5. _RI:    JP  RI               ; READER IN
  6. _CO:    JP  CO               ; CONSOL OUT
  7. _PO:    JP  POUT             ; PUNCH OUT
  8. _LO:    JP  LOUT             ; LIST OUT
  9. _CSTS:  JP  CSTS             ; CONSOL STATUS
  10. _IOCHK: JP  IOCHK            ; GET IO STATE
  11. _IOSET: JP  IOSET            ; SET IO STATE
  12. _MEMCK: JP  MEMCK            ; GET TOP OF RAM
  13. _IODEF: JP  RET_RAM          ; SET USER IO
  14. _REST:  JP  IRUN             ; INTERRUPT ENTRY
  15. _RQDIO: JP  RQDIO            ; CALL TO DISK MONITOR
  16. _RQRES: JP  RQRES            ; BUFFER RESET
  17. _RQSET: JP  RQSET            ; CHANALL ASSIGN
  18. _RQCHK: JP  RQCHK            ; GET CHANALL DESCRIPTION BLOCK
  19. _MUX:   JP  MUX
  20.  
  21. ; TEMPORARY
  22. RI:
  23. POUT:
  24.  
  25. RET_RAM: NOP
  26.          RET
  27.  
  28. RUN:    CALL S_ON
  29.         JP   ALL_INIT
  30.  
  31. IRUN:   CALL S_ON
  32.         RST  0
  33.  
  34. MUX:    CALL    SYS_ON
  35.         CALL    DO_MUX
  36.         CALL    SYS_OFF
  37.         EI
  38.         RET
  39.  
  40. ;       IF ROM
  41. LPORT   EQU     0FBH
  42. ;       ELSE
  43. ;LPORT   EQU     7BH
  44. ;       ENDIF
  45.  
  46. LOUT:   IN A,(LPORT)
  47.         RLCA
  48.         JR C,LOUT
  49.         LD A,C
  50.         OUT (0FBH),A
  51.         OUT (07BH),A
  52.         OUT (0FBH),A
  53.         RET
  54.  
  55. MEMCK:  LD      B,0F8H
  56.         LD      A,0
  57.         RET
  58.  
  59. ENTR1:  CALL    S_OFF
  60.         IM      2
  61.         JP      BIOS
  62.  
  63. ENTR2:  CALL    S_OFF
  64.         IM      2
  65.         CALL    BIOS+3
  66. ENT_ADR EQU     $-2
  67.         CALL    S_ON
  68.         IM      1
  69.         RET
  70.  
  71. ;----------------------
  72. RQRES:  CALL    SYS_ON
  73.         LD      (IX-_BUFT),0FFH
  74.         CALL    SYS_OFF
  75.         EI
  76.         RET
  77. ;-----------------------
  78. RQSET:  LD      A,_SETCH
  79.         JR      SETCHK
  80. ;-----------------------
  81. RQCHK:  LD      A,_GETCH
  82. SETCHK: CALL    SYS_ON
  83.         CALL    PSCHK
  84.  
  85. ;        EI
  86. ;        LD      (RQCOM),A
  87. ;        LD      (IX-_RQCHAN),C
  88. ;        PUSH    DE
  89. ;        PUSH    HL
  90. ;        EX      DE,HL
  91. ;        LD      (RQBADR),HL
  92. ;        LD      DE,RQCHAN
  93. ;        CALL    DISK
  94. ;        POP     HL
  95. ;        POP     DE
  96.  
  97.         CALL    SYS_OFF
  98.         EI
  99.         RET
  100.  
  101. ;----------------------
  102. RQDIO:  CALL    SYS_ON
  103.         CALL    PDISK
  104.  
  105. ;        LD      HL,RQCHAN
  106. ;        LD      (HL),C
  107. ;        LD      B,8
  108. ;        EX      DE,HL
  109. ;RQLP:   INC     HL
  110. ;        INC     DE
  111. ;        CALL    MOVAM
  112. ;        LD      (DE),A
  113. ;        DJNZ    RQLP
  114. ;        EI
  115. ;        CALL    DISK
  116.  
  117.         CALL    SYS_OFF
  118.         EI
  119.         RET
  120.  
  121. ;----------------------
  122. CO:     CALL    SYS_ON
  123.         EI
  124.         PUSH    AF
  125.         LD      A,C
  126.         CALL    CONOUT
  127.         POP     AF
  128.         CALL    SYS_OFF
  129.         EI
  130.         RET
  131.  
  132. ;----------------------
  133. CI:     CALL    SYS_ON
  134.         EI
  135.         CALL    READ_K
  136.         CALL    SYS_OFF
  137.         EI
  138.         RET
  139.  
  140. ;----------------------
  141. CSTS:   CALL    SYS_ON
  142.         CALL    STAT_K
  143.         CALL    SYS_OFF
  144.         EI
  145.         RET
  146.  
  147. ;----------------------
  148. ;УСТАНОВКА СИСТЕМЫ В/В
  149. IOSET:  LD      A,C
  150.         LD      (IOBYTE),A
  151.         RET
  152. ;----------------------
  153. ;СОСТОЯНИЕ СИСТЕМЫ В/В
  154. IOCHK:  LD      A,(IOBYTE)
  155.         RET
  156.  
  157. ;----------------------
  158. ;RQMOV:  CALL    S_OFF
  159.  
  160. ;LLLL:  LD      A,0FEH
  161. ;       IN      A,(0FEH)
  162. ;       AND     1
  163. ;       JR      NZ,LLLL
  164.  
  165. ;        LDIR
  166. ;        CALL    S_ON
  167. ;        EI
  168. ;        RET
  169.  
  170. ;RQGET:  LD      A,(HL)
  171. ;        EX      DE,HL
  172. ;        CALL    MOVMA
  173. ;        EX      DE,HL
  174. ;        INC     HL
  175. ;        INC     DE
  176. ;        DJNZ    RQGET
  177. ;        EI
  178. ;        RET
  179.  
  180. ;RQPUT:  CALL    MOVAM
  181. ;        LD      (DE),A
  182. ;        INC     HL
  183. ;        INC     DE
  184. ;        DJNZ    RQPUT
  185. ;        EI
  186. ;        RET
  187.  
  188. ;----------------------
  189. ;ПРОЦЕДУРЫ ДЛЯ ОБМЕНА С МОНИТОРОМ
  190. ;MOVAM:  CALL    S_OFF
  191. ;        LD      A,(HL)
  192. ;        CALL    S_ON
  193. ;        RET
  194.  
  195. ;MOVMA:  CALL    S_OFF
  196. ;        LD      (HL),A
  197. ;        CALL    S_ON
  198. ;        RET
  199.  
  200. ;----------------------
  201. ;SYSTEM ON/OFF PROC'S
  202. S_ON:   DI
  203.                 LD (RA_I),A
  204.                 LD A,0X52
  205. SYS_SW          EX (SP),HL
  206.         LD      (R_ADR),HL
  207.         POP     HL
  208.                 OUT (0XFD),A
  209. ;        LD      (RA_I),A
  210. ;        LD      A,C
  211. ;        LD      (RC_I),A
  212. ;        LD      C,0
  213. ;FE_CPY  EQU     $-1
  214. ;        SET     7,C
  215. ;        LD      A,0
  216. ;BOR_CPY EQU     $-1
  217. ;        OUT     (C),A
  218.                 LD A,0
  219. RA_I    EQU     $-1
  220. ;        LD      C,0
  221. ;RC_I    EQU     $-1
  222.         JP      0
  223. R_ADR   EQU     $-2
  224.  
  225. SYS_ON: DI
  226.         EX      (SP),HL
  227.         LD      (R_1),HL
  228.         POP     HL
  229.         CALL    S_ON
  230.         LD      (OLD_SP),SP
  231.         LD      SP,SYS_SP
  232.         IM      1
  233.         PUSH    IX
  234.         LD      IX,IX_BASE
  235.         JP      0
  236. R_1     EQU     $-2
  237.  
  238. S_OFF:  DI
  239.                 LD (RA_I),A
  240.                 LD A,0X42
  241. ;        EX      (SP),HL
  242. ;        LD      (R_ADR),HL
  243. ;        POP     HL
  244. ;        LD      (RA_I),A
  245. ;        LD      A,C
  246. ;        LD      (RC_I),A
  247. ;        LD      A,(FE_IMG)
  248. ;        LD      (FE_CPY),A
  249. ;        RES     7,A
  250. ;        LD      C,A
  251. ;        LD      A,(BORDER)
  252. ;        LD      (BOR_CPY),A
  253. ;        OUT     (C),A
  254.         JR      SYS_SW
  255.  
  256. SYS_OFF: DI
  257.         EX      (SP),HL
  258.         LD      (R_2),HL
  259.         POP     HL
  260.         POP     IX
  261.         CALL    S_OFF
  262.         LD      SP,(OLD_SP)
  263.         IM      2
  264.         JP      0
  265. R_2     EQU     $-2
  266.  
  267. INT_R           DI
  268.         LD      (OLD_SP),SP
  269.         LD      SP,SYS_SP
  270.         IM      1
  271.         LD      (I_A_I),A
  272.                 LD A,0X52
  273.                 OUT (0XFD),A
  274. ;        LD      A,C
  275. ;        LD      (I_C_I),A
  276. ;        LD      A,(FE_CPY)
  277. ;        SET     7,A
  278. ;        LD      C,A
  279. ;        LD      A,(BOR_CPY)
  280. ;        OUT     (C),A
  281.         CALL    DO_INT
  282.                 LD A,0X42
  283.                 OUT (0XFD),A
  284. ;        LD      A,(FE_IMG)
  285. ;        LD      (FE_CPY),A
  286. ;        RES     7,A
  287. ;        LD      C,A
  288. ;        LD      A,(BORDER)
  289. ;        LD      (BOR_CPY),A
  290. ;        OUT     (C),A
  291.         LD      A,0
  292. I_A_I   EQU     $-1
  293. ;        LD      C,0
  294. ;I_C_I   EQU     $-1
  295.         DI
  296.         LD      SP,(OLD_SP)
  297.         IM      2
  298.         EI
  299.         RET
  300.  
  301. PM_SET_PG       LD A,(TMP_W)
  302.                 CP 3
  303.                 JP NC,PM_ERR_3
  304.                 POP BC
  305.                 CALL SYS_OFF
  306.                 RRCA
  307.                 RRCA
  308.                 AND 0XC0
  309.                 LD B,A
  310.                 LD A,D
  311.                 XOR 0X80
  312.                 CPL
  313.                 LD C,LOW (WIN_A0)
  314.                 OUT (C),A
  315.                 XOR A
  316.                 EI
  317.                 RET
  318.  
  319. CHTBL:  DW      CH0          ; CHANALL DESCRIPTIONS
  320.         DW      CHED
  321.         DW      CH2
  322.         DW      CH3
  323.         DW      CH4
  324.         DW      CH5
  325.         DW      CH6
  326.         DW      CH7
  327.         DW      CH8
  328.         DW      CH9
  329.  
  330. ;-----------------------
  331. ;ТАБЛИЦА ДРАЙВЕРОВ
  332. DCTBL: DW      0       ;РЕЗЕРВ
  333.         DW      0       ;PD1207
  334.         DW      ED_DRV
  335.         DW      FDC_DRV
  336.         DW      HD_DRV       ;WD1207
  337.         DW      0       ;РЕЗЕРВ
  338.         DW      0       ;РЕЗЕРВ
  339.         DW      0       ;РЕЗЕРВ
  340. ;-----------------------
  341.  
  342. OLD_SP          DW 0
  343.  
  344. QQ      EQU     $
  345.  
  346.                 DUPL (256*HIGH($+255))-$-1,0;        DEFS    (256*HIGH($+255))-$-1
  347.  
  348. ;PRINT <IDLE SPACE > %($-QQ)
  349.  
  350. INTRADR: DW     INT_R
  351.  
  352. ;-----------------------
  353. ;ГИБКИЙ МАГНИТНЫЙ ДИСК 80X2
  354. CH0:    DB      0FFH    ;ПРИЗНАК ДЕЙСТВИТЕЛЬНОСТИ
  355.         DB      3       ;КОД УСТРОЙСТВА
  356.         DB      0       ;НОМЕР ПРИВОДА
  357.         DB      0       ;ЧИСЛО НЕБУФЕРИЗИРУЕМЫХ И СИСТЕМНЫХ ДОРОЖЕК
  358.         DB      0       ;ЧИСЛО ФИКСИРОВАННЫХ ГОЛОВОК
  359.         DB      2       ;ЧИСЛО СМЕННЫХ ГОЛОВОК
  360.         DW      80      ;ЧИСЛО ЦИЛИНДРОВ НА ДИСКЕ
  361.         DB      16      ;ЧИСЛО СЕКТОРОВ НА ДОРОЖКЕ
  362.         DW      256     ;ЧИСЛО БАЙТОВ В СЕКТОРЕ
  363.         DB      2       ;ЧИСЛО СИСТЕМНЫХ ДОРОЖЕК
  364.         DW      0       ;НОМЕР НАЧАЛЬНОЙ ДОРОЖКИ
  365.         DW      5120    ;ЧИСЛО БЛОКОВ НА ДИСКЕ
  366.         DW      32      ;ЧИСЛО БЛОКОВ НА ДОРОЖКЕ
  367.         DW      160     ;ЧИСЛО ДОРОЖЕК НА ДИСКЕ
  368.         DB      8       ;ДЛИНА НОМЕРА БЛОКА В СЕКТОРЕ
  369.         DW      128     ;ЧИСЛО ЗАПИСЕЙ В ДИРЕКТОРИИ
  370.         DB      2       ;РАЗМЕТКА ПЕРВОЙ ДОРОЖКИ
  371.         DB      2       ;РАЗМЕТКА ВТОРОЙ ДОРОЖКИ
  372.         DB      2       ;РАЗМЕТКА ВСЕХ ОСТАВШИХСЯ ДОРОЖЕК
  373.         DB      0       ;СМЕЩЕНИЕ ПЕРВОГО СЕКТОРА
  374.         DB      0       ;ПРИЗНАК 8-ДЮЙМОВОГО ДИСКА
  375.         DB      0FFH    ;ПЛОТНОСТЬ ЗАПИСИ
  376.         DB      1       ;РАЗМЕР СЕКТОРА
  377.         DB      80      ;GAP3 ДЛЯ ЧТЕНИЯ/ЗАПИСИ
  378.         DB      80      ;GAP3 ДЛЯ ФОРМАТА
  379.         DB      0       ;ВРЕМЯ ШАГА
  380.         DB      0       ;ВРЕМЯ ОПУСКАНИЯ ГОЛОВКИ
  381.         DB      0       ;ПРИЗНАК ВКЛЮЧЕНИЯ МОТОРА
  382.  
  383. MON_SIZE EQU    $-_RUN+0X3A
  384. BSS_START       EQU $+0X3A
  385.  
  386. CH2             EQU $
  387. CHED            EQU CH2+0X23
  388. CH3             EQU     CHED+0X23-5
  389. CH4             EQU     CH3+23H
  390. CH5             EQU     CH4+23H
  391. CH6             EQU     CH5+23H
  392. CH7             EQU     CH6+23H
  393. CH8             EQU     CH7+23H
  394. CH9             EQU     CH8+23H
  395.  
  396. BUF_MON         EQU CH9+23H      ; DMON BUFFER (1024 BYTE)
  397. BSS_END         EQU BUF_MON+1024
  398. BSS_LNG         EQU BSS_END-BSS_START
  399. ;NXT     EQU     BUF+1024
  400.  
  401. ;PRINT <MONITOR IMAGE SIZE - > %(MON_SIZE)
  402. ;PRINT <TOTAL RAM-RESIDENT PART OF RBIOS - > %(NXT-_RUN)
  403. ;PRINT <FREE RAM (FROM TOP) - > %(0FFFFH-NXT+1)
  404.  
  405.                 DEPHASE
  406.