Subversion Repositories pentevo

Rev

Rev 588 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ;LAST UPDATE: 21.05.2012 savelij
  3.  
  4. ;ПОСЛЕДОВАТЕЛЬНОСТЬ ДЛЯ RST 8
  5. ;СТАРЫЙ СТЕК    HL AF BC RF ADR_RET DE  ->
  6. ;-> НОВЫЙ СТЕК  HL(НОМЕР ПАГИ И ПОРТ BF) DE(RAMNROM И DOS7FFD) BC' DE' HL' IX IY AF' ->
  7. ;-: ЧТЕНИЕ КОНФИГА
  8.  
  9. CODE_NMIRST
  10.                 PHASE ADR_SEL_ROM
  11.                 OUT (C),A                       ;ПЕРЕКЛЮЧЕНИЕ СТРАНИЦ ДЛЯ ПЕРЕХОДОВ
  12.                 NOP
  13. FOR_RET         NOP
  14.                 LD (RST8_SAVE_SP-CPU2),SP       ;СОХРАНИЛИ СТАРЫЙ СТЕК
  15.                 LD SP,RREG_E-CPU2
  16.                 PUSH HL                         ;НОМЕР СТРАНИЦЫ ОТКУДА ПРИШЛИ И СОДЕРЖИМОЕ ПОРТА BF
  17.                 PUSH DE                         ;БИТЫ RAMNROM+DOS7FFD
  18.                 EXX
  19.                 PUSH BC                         ;BC'
  20.                 PUSH DE                         ;DE'
  21.                 PUSH HL                         ;HL'
  22.                 EXX
  23.                 PUSH IX                         ;IX
  24.                 PUSH IY                         ;IY
  25.                 EX AF,AF'
  26.                 PUSH AF                         ;AF'
  27.                 LD A,I
  28.                 PUSH AF                         ;IF
  29.                 JP RAMSEL1
  30.  
  31. OUT_NMI         OUT (0XBE),A
  32.                 RETN
  33.  
  34.                 DUPL 0X0038-$,0
  35. IM_EI_RET       EI
  36.                 RET
  37.  
  38.                 DUPL 0X0066-$,0XFF
  39.                 NOP
  40. ADR_MAGIC       JP NMI_SERVICE
  41. ADR_NMI_JUMP    EQU $-2
  42.  
  43.                 PHASE $+CPU2
  44. ;СЧИТАННАЯ КОНФИГУРАЦИЯ ПОРТОВ ДЛЯ RST 8
  45. R_BF            DB 0
  46. R_77            DB 0
  47. R_EFF7          DB 0
  48. R_7FFD          DB 0
  49. R_DOS7FFD       DB 0
  50. R_RAMNROM       DB 0
  51. R_1WINA3        DB 0
  52. R_1WINA2        DB 0
  53. R_1WINA1        DB 0
  54. R_1WINA0        DB 0
  55. R_0WINA3        DB 0
  56. R_0WINA2        DB 0
  57. R_0WINA1        DB 0
  58. R_0WINA0        DB 0
  59.  
  60. ;СЧИТАННАЯ КОНФИГУРАЦИЯ ПОРТОВ ДЛЯ NMI
  61. N_BF            DB 0
  62. N_77            DB 0
  63. N_EFF7          DB 0
  64. N_7FFD          DB 0
  65. N_DOS7FFD       DB 0
  66. N_RAMNROM       DB 0
  67. N_1WINA3        DB 0
  68. N_1WINA2        DB 0
  69. N_1WINA1        DB 0
  70. N_1WINA0        DB 0
  71. N_0WINA3        DB 0
  72. N_0WINA2        DB 0
  73. N_0WINA1        DB 0
  74. N_0WINA0        DB 0
  75. N_TEK_PALS      DUPL 0X10,0
  76.  
  77. ;СОХРАНЕННЫЕ РЕГИСТРЫ ПРИ ВЫЗОВЕ RST 8
  78. RREG_FI         DB 0
  79. RREG_I          DB 0                            ;IF
  80. RREG_FF         DB 0
  81. RREG_AA         DB 0                            ;AF'
  82. RREG_IYL        DB 0
  83. RREG_IYH        DB 0                            ;IY
  84. RREG_IXL        DB 0
  85. RREG_IXH        DB 0                            ;IX
  86. RREG_LL         DB 0
  87. RREG_HH         DB 0                            ;HL'
  88. RREG_EE         DB 0
  89. RREG_DD         DB 0                            ;DE'
  90. RREG_CC         DB 0
  91. RREG_BB         DB 0                            ;BC'
  92. RDOS7FFD        DB 0                            ;БИТЫ DOS7FFD ПЕРЕД ВЫЗОВОМ
  93. RRAMNROM        DB 0                            ;БИТЫ RAMNROM ПЕРЕД ВЫЗОВОМ
  94. RPBF_CALL       DB 0                            ;СОДЕРЖИМОЕ ПОРТА BF ПЕРЕД ВЫЗОВОМ
  95. RPAGE_CALL      DB 0                            ;НОМЕР СТРАНИЦЫ ОТКУДА ПРИШЛИ
  96. RREG_E          DB 0
  97. RREG_D          DB 0                            ;DE
  98. RADRRET_L       DB 0
  99. RADRRET_H       DB 0                            ;ADR_RET
  100. REI_DI          DB 0
  101. R_R             DB 0                            ;RF
  102. RREG_C          DB 0
  103. RREG_B          DB 0                            ;BC
  104. RREG_F          DB 0
  105. RREG_A          DB 0                            ;AF
  106. RREG_L          DB 0
  107. RREG_H          DB 0                            ;HL
  108. RST8_SAVE_SP    DW 0
  109.  
  110. ;СОХРАНЕННЫЕ РЕГИСТРЫ ПРИ ВЫЗОВЕ NMI
  111. ;HL AF IF RF DE BC HL' DE' BC' IX IY AF'
  112. NADRRET_L       DB 0
  113. NADRRET_H       DB 0
  114. NREG_FF         DB 0
  115. NREG_AA         DB 0
  116. NREG_IYL        DB 0
  117. NREG_IYH        DB 0
  118. NREG_IXL        DB 0
  119. NREG_IXH        DB 0
  120. NREG_CC         DB 0
  121. NREG_BB         DB 0
  122. NREG_EE         DB 0
  123. NREG_DD         DB 0
  124. NREG_LL         DB 0
  125. NREG_HH         DB 0
  126. NREG_C          DB 0
  127. NREG_B          DB 0
  128. NREG_E          DB 0
  129. NREG_D          DB 0
  130. NREG_EI_DI_2    DB 0
  131. NREG_R          DB 0
  132. NREG_EI_DI_1    DB 0
  133. NREG_I          DB 0
  134. NREG_F          DB 0
  135. NREG_A          DB 0
  136. NREG_L          DB 0
  137. NREG_H          DB 0
  138. NMI_SAVE_SP     DW 0                            ;АДРЕС СОХРАНЕНИЯ СТЕКА ПРОГРАММЫ ПРЕРВАННОЙ ПО NMI
  139. INTERNAL_SP     DW 0                            ;АДРЕС ХРАНЕНИЯ СТЕКА ПРИ РАБОТЕ СЕРВИСОВ
  140. B0_CPU0         DB 0                            ;БАЙТ ДЛЯ ПОРТА 0 ОКНА 0 МАПЕРА
  141. P0_CPU0         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 0 ОКНА 0 МАПЕРА
  142. B0_CPU1         DB 0                            ;БАЙТ ДЛЯ ПОРТА 1 ОКНА 0 МАПЕРА
  143. P0_CPU1         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 1 ОКНА 0 МАПЕРА
  144. B0_CPU2         DB 0                            ;БАЙТ ДЛЯ ПОРТА 2 ОКНА 0 МАПЕРА                    
  145. P0_CPU2         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 2 ОКНА 0 МАПЕРА
  146. B0_CPU3         DB 0                            ;БАЙТ ДЛЯ ПОРТА 3 ОКНА 0 МАПЕРА                    
  147. P0_CPU3         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 3 ОКНА 0 МАПЕРА
  148. B1_CPU0         DB 0                            ;БАЙТ ДЛЯ ПОРТА 0 ОКНА 0 МАПЕРА                    
  149. P1_CPU0         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 0 ОКНА 0 МАПЕРА
  150. B1_CPU1         DB 0                            ;БАЙТ ДЛЯ ПОРТА 1 ОКНА 0 МАПЕРА                    
  151. P1_CPU1         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 1 ОКНА 0 МАПЕРА
  152. B1_CPU2         DB 0                            ;БАЙТ ДЛЯ ПОРТА 2 ОКНА 0 МАПЕРА                    
  153. P1_CPU2         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 2 ОКНА 0 МАПЕРА
  154. B1_CPU3         DB 0                            ;БАЙТ ДЛЯ ПОРТА 3 ОКНА 0 МАПЕРА                    
  155. P1_CPU3         DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 3 ОКНА 0 МАПЕРА
  156. B_PORT77        DB 0                            ;БАЙТ ДЛЯ ВЫВОДА В ПОРТ ХХ77
  157. P_PORT77        DB 0                            ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ХХ77
  158.  
  159. F_INTEXT_DRV    DB 0                            ;ФЛАГИ ПРИ ВНЕШНИХ/ВНУТРЕННИХ ВЫЗОВАХ ДРАЙВЕРОВ
  160.  
  161.                 PHASE $-CPU2
  162.                 DUPL HIGH ($)*0X100+0XFF-$,0
  163.                 DW IM_EI_RET
  164.  
  165.                 DUPL HIGH ($)*0X100+0X80-$,0
  166. STACK_RST
  167.  
  168.                 DUPL (HIGH ($)+1)*0X100-$,0
  169. STACK_NMI
  170.  
  171. RAMSEL1         LD HL,OUT_NMI
  172.                 LD (ADR_NMI_JUMP),HL
  173.                 LD A,0XC9
  174.                 LD (FOR_RET),A
  175.                 XOR A
  176.                 LD I,A
  177.                 LD HL,(RST8_SAVE_SP-CPU2)
  178.                 LD DE,RREG_E-CPU2
  179.                 LD BC,RREG_H-RPAGE_CALL
  180.                 LDIR
  181.                 LD HL,R_77-CPU2
  182.                 LD BC,RD_77
  183.                 INIR
  184.                 INI
  185.                 LD HL,(RDOS7FFD-CPU2)
  186.                 LD (R_DOS7FFD-CPU2),HL
  187.                 LD SP,STACK_RST
  188.                 LD A,(R_77-CPU2)
  189.                 AND 7
  190.                 OR 0XA8
  191.                 LD BC,0XFF77
  192.                 OUT (C),A
  193.                 XOR A
  194.                 OUT (PEVO_CONF),A
  195.                 LD BC,PENT_CONF
  196.                 OUT (C),A
  197.                 INC A
  198.                 OUT (PEVO_CONF),A
  199.                 LD A,(R_7FFD-CPU2)
  200.                 AND 0X10
  201.                 LD HL,R_0WINA0-CPU2
  202.                 JR Z,RAMSEL3
  203.                 LD HL,R_1WINA0-CPU2
  204. RAMSEL3         LD A,(RPAGE_CALL-CPU2)
  205.                 LD (HL),A
  206.                 LD HL,R_0WINA3-CPU2
  207.                 JR Z,RAMSEL4
  208.                 LD HL,R_1WINA3-CPU2
  209. RAMSEL4         LD A,(HL)
  210.                 AND 0X3F
  211.                 OR 0X40
  212.                 LD BC,WIN_A3
  213.                 OUT (C),A
  214.                 LD BC,WIN_P2
  215.                 XOR A
  216.                 OUT (C),A
  217.                 LD BC,WIN_A0
  218.                 LD A,5
  219.                 LD HL,CPU2
  220.                 ADD HL,SP
  221.                 LD SP,HL
  222.                 LD HL,CONT_RST8                 ;АДРЕС ПРОДОЛЖЕНИЯ ОБРАБОТКИ RST 8
  223.                 PUSH HL
  224.                 JP ADR_SEL_ROM
  225.  
  226. P4_EXIT_RST8    LD HL,NMI_SERVICE
  227.                 LD (ADR_NMI_JUMP),HL
  228.                 LD C,LOW (WIN_A1)
  229.                 LD HL,B1_CPU1-CPU2
  230.                 LD A,3
  231. RENS12          EX AF,AF'
  232.                 LD E,(HL)                       ;БАЙТ ДЛЯ ЗАПИСИ В ПОРТ
  233.                 INC HL
  234.                 LD D,(HL)                       ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА
  235.                 INC HL
  236.                 LD A,D
  237.                 OR 0X3F
  238.                 LD B,A
  239.                 BIT 3,D
  240.                 JR NZ,RENS14
  241.                 SET 3,B
  242.                 LD A,D
  243.                 AND 3
  244.                 RRCA
  245.                 RRCA
  246.                 OUT (C),A
  247.                 RES 3,B
  248. RENS14          OUT (C),E
  249.                 EX AF,AF'
  250.                 DEC A
  251.                 JR NZ,RENS12
  252.                 LD HL,RST8_SAVE_SP-(RREG_H-RPAGE_CALL)-CPU2
  253.                 LD DE,(RST8_SAVE_SP-CPU2)
  254.                 LD BC,RREG_H-RPAGE_CALL
  255.                 LDIR
  256.                 XOR A
  257.                 LD (FOR_RET),A
  258.                 OUT (PEVO_CONF),A
  259.                 LD BC,PENT_CONF
  260.                 LD A,(R_EFF7-CPU2)
  261.                 OUT (C),A
  262.                 LD A,1
  263.                 OUT (PEVO_CONF),A
  264.                 LD BC,(B_PORT77-CPU2)
  265.                 LD A,C
  266.                 LD C,0X77
  267.                 OUT (C),A
  268.                 LD SP,RREG_FI-CPU2
  269.                 POP AF
  270.                 LD I,A
  271.                 POP AF
  272.                 EX AF,AF'
  273.                 POP IY
  274.                 POP IX
  275.                 POP HL
  276.                 POP DE
  277.                 POP BC
  278.                 EXX
  279.                 POP DE
  280.                 POP HL
  281.                 LD SP,(RST8_SAVE_SP-CPU2)       ;ВОССТАНОВИЛИ СТЕК ВЫЗВАШЕЙ ПРОГРАММЫ
  282.                 LD BC,ADR_RST8END               ;АДРЕС ВОЗВРАТА
  283.                 PUSH BC
  284.                 LD A,(R_7FFD-CPU2)
  285.                 AND 0X10
  286.                 LD DE,(B0_CPU0-CPU2)
  287.                 JR Z,RENS13
  288.                 LD DE,(B1_CPU0-CPU2)
  289. RENS13          LD A,D
  290.                 OR 0X3F
  291.                 LD B,A
  292.                 BIT 3,D
  293.                 JR NZ,RENS15
  294.                 SET 3,B
  295.                 LD A,E
  296.                 AND 3
  297.                 RRCA
  298.                 RRCA
  299.                 OUT (C),A
  300.                 RES 3,B
  301. RENS15          LD A,E                          ;СТРАНИЦА ROM КУДА ВОЗВРАЩАТЬСЯ
  302.                 LD C,LOW (WIN_A0)
  303.                 JP ADR_SEL_ROM
  304.  
  305. NMI_SERVICE     LD (NMI_SAVE_SP-CPU2),SP        ;СОХРАНЕНИЕ СТЕКА
  306.                 LD SP,NMI_SAVE_SP-CPU2          ;НОВЫЙ СТЕК
  307.                 PUSH HL                         ;СОХРАНИЛИ HL
  308.                 PUSH AF                         ;СОХРАНИЛИ AF
  309.                 LD A,I
  310.                 PUSH AF                         ;СОХРАНИЛИ I, ФЛАГИ И РЕЖИМ ПРЕРЫВАНИЙ
  311.                 LD A,R
  312.                 PUSH AF                         ;СОХРАНИЛИ R
  313.                 PUSH DE                         ;СОХРАНИЛИ DE
  314.                 PUSH BC                         ;СОХРАНИЛИ BC
  315.                 EXX
  316.                 PUSH HL                         ;СОХРАНИЛИ АЛЬТ HL
  317.                 PUSH DE                         ;СОХРАНИЛИ АЛЬТ DE
  318.                 PUSH BC                         ;СОХРАНИЛИ АЛЬТ BC
  319.                 PUSH IX                         ;СОХРАНИЛИ IX
  320.                 PUSH IY                         ;СОХРАНИЛИ IY
  321.                 EX AF,AF'
  322.                 PUSH AF                         ;СОХРАНИЛИ АЛЬТ AF
  323.                 LD HL,(NMI_SAVE_SP-CPU2)
  324.                 LD E,(HL)
  325.                 INC HL
  326.                 LD D,(HL)
  327.                 PUSH DE
  328.                 LD SP,STACK_NMI
  329.                 LD HL,OUT_NMI
  330.                 LD (ADR_NMI_JUMP),HL
  331.                 LD A,0XC9
  332.                 LD (FOR_RET),A                  ;RET ДЛЯ ПЕРЕКЛЮЧЕНИЯ СТРАНИЦ ROM/RAM
  333.                 LD HL,N_BF-CPU2                 ;АДРЕС СОХРАНЕНИЯ ПРОЧИТАННЫХ РЕГИСТРОВ КОНФИГУРАЦИИ
  334.                 IN A,(PEVO_CONF)
  335.                 LD (HL),A
  336.                 INC HL
  337.                 LD BC,RD_77
  338. NMISERV002      INIR
  339.                 INI
  340.                 XOR A
  341.                 LD I,A                          ;ОБРАБОТЧИК ПРЕРЫВАНИЯ ПЕРЕСТАВИЛИИ ДЛЯ АДРЕСА 00FF
  342.                 INC A
  343.                 OUT (PEVO_CONF),A
  344.                 LD DE,0XA70F                    ;ДАЛЬШЕ СОХРАНЯЕМ ТЕКУЩУЮ ПАЛИТРУ
  345.                 LD BC,0XBD77
  346.                 OUT (C),D                       ;ВКЛЮЧЕНИЕ ТЕКСТМОДА
  347.                 LD (ADR_PALITRA),HL
  348.                 LD BC,RD_PALITRA
  349.                 EI
  350.                 HALT
  351.                 DI
  352. NMISERV003      LD A,E
  353.                 BIT 3,E
  354.                 OUT (0XFE),A
  355.                 JR Z,NMISERV004
  356.                 OUT (0XF6),A
  357. NMISERV004      IN A,(C)
  358.                 LD (HL),A
  359.                 INC HL
  360.                 DEC E
  361.                 JP P,NMISERV003                 ;ПАЛИТРУ СОХРАНИЛИ
  362.                 LD HL,MAGIC_PAL
  363.                 LD E,0X0F
  364. SETPAL1         LD A,E
  365.                 BIT 3,E
  366.                 OUT (0XFE),A
  367.                 JR Z,$+4
  368.                 OUT (0XF6),A
  369.                 LD A,(HL)
  370.                 INC HL
  371.                 OR %00001100
  372.                 OUT (0XFF),A
  373.                 DEC E
  374.                 JP P,SETPAL1
  375.                 LD BC,0XFF77
  376.                 OUT (C),D
  377.                 LD BC,WIN_P2
  378.                 XOR A
  379.                 OUT (C),A                       ;ВКЛЮЧИЛИ ПОСЛЕДНЮЮ СТРАНИЦУ ОЗУ
  380.                 LD HL,CPU2
  381.                 ADD HL,SP
  382.                 LD SP,HL
  383.                 LD H,A
  384.                 LD L,A
  385.                 PUSH HL
  386.                 LD B,HIGH (WIN_A0)
  387.                 LD A,5
  388.                 OUT (C),A
  389.                 JP OUT_NMI
  390.  
  391. ;ВЫХОД ИЗ МАГИКА
  392. EXITNMISERVICE  LD HL,ADR_MAGIC
  393.                 LD (HL),0XC9                    ;ЗАГЛУШКА НА MAGIC
  394.                 IN A,(PEVO_CONF)
  395.                 SET 3,A
  396.                 OUT (PEVO_CONF),A
  397.                 RES 3,A
  398.                 OUT (PEVO_CONF),A
  399.                 HALT                            ;ЖДЕМ СРАБАТЫВАНИЯ MAGIC
  400. FALSE_NMI       LD HL,ADR_MAGIC
  401.                 LD (HL),0XC3                    ;РАЗРЕШЕНИЕ ОБРАБОТЧИКА MAGIC ПЕРЕД ВЫХОДОМ
  402.                 LD HL,0
  403. ADR_PALITRA     EQU $-2
  404.                 LD A,(N_77-CPU2)
  405.                 LD E,0X0F
  406.                 AND E
  407.                 OR 0XA0
  408.                 LD D,A
  409.                 LD BC,0XBD77                    ;ДОСТУП К ПАЛИТРЕ
  410.                 OUT (C),D                       ;вкл.PAL
  411. SETPAL0         LD A,E
  412.                 BIT 3,E
  413.                 OUT (0XFE),A
  414.                 JR Z,$+4
  415.                 OUT (0XF6),A
  416.                 LD A,(HL)
  417.                 INC HL
  418.                 OR %00001100
  419.                 OUT (0XFF),A
  420.                 DEC E
  421.                 JP P,SETPAL0
  422.                 LD BC,0XFF77
  423.                 OUT (C),D
  424.                 LD C,LOW (WIN_A0)
  425.                 LD A,(N_7FFD-CPU2)
  426.                 AND 0X10
  427.                 LD HL,B0_CPU0-CPU2
  428.                 JR Z,ENS11
  429.                 LD HL,B1_CPU0-CPU2
  430. ENS11           LD A,4
  431. ENS12           EX AF,AF'
  432.                 LD E,(HL)                       ;БАЙТ ДЛЯ ЗАПИСИ В ПОРТ
  433.                 INC HL
  434.                 LD D,(HL)                       ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА
  435.                 INC HL
  436.                 LD A,D
  437.                 OR 0X3F
  438.                 LD B,A
  439.                 BIT 3,D
  440.                 JR NZ,ENS15
  441.                 SET 3,B
  442.                 LD A,D
  443.                 AND 3
  444.                 RRCA
  445.                 RRCA
  446.                 OUT (C),A
  447.                 RES 3,B
  448. ENS15           OUT (C),E
  449.                 EX AF,AF'
  450.                 DEC A
  451.                 JR NZ,ENS12
  452.                 XOR A
  453.                 OUT (PEVO_CONF),A
  454.                 LD BC,PENT_CONF
  455.                 LD A,(N_EFF7-CPU2)
  456.                 OUT (C),A
  457.                 LD A,1
  458.                 OUT (PEVO_CONF),A
  459.                 LD BC,(B_PORT77-CPU2)
  460.                 LD A,C
  461.                 LD C,0X77
  462.                 OUT (C),A
  463.                 LD A,(N_BF-CPU2)
  464.                 OUT (PEVO_CONF),A
  465.                 LD BC,0X7FFD
  466.                 LD A,(N_7FFD-CPU2)
  467.                 OUT (C),A
  468.                 LD HL,NMI_SERVICE
  469.                 LD (ADR_NMI_JUMP),HL
  470.                 XOR A
  471.                 LD (FOR_RET),A
  472.                 LD SP,NADRRET_L-CPU2
  473.                 POP AF                          ;СБРОС АДРЕСА ВОЗВРАТА
  474.                 POP AF
  475.                 EX AF,AF'
  476.                 POP IY
  477.                 POP IX
  478.                 POP BC
  479.                 POP DE
  480.                 POP HL
  481.                 EXX
  482.                 POP BC
  483.                 POP DE
  484.                 EI
  485.                 HALT
  486.                 POP AF
  487.                 LD R,A
  488.                 JP PO,ENMISERV1
  489.                 EI
  490. ENMISERV1       POP AF
  491.                 LD I,A
  492.                 POP AF
  493.                 POP HL
  494.                 LD SP,(NMI_SAVE_SP-CPU2)
  495.                 OUT (0XBE),A
  496.                 RETN
  497.  
  498. MAGIC_PAL       DB 0X0C,0X2D,0X4E,0X6F,0X9C,0XBD,0XDE,0XFF
  499.                 DB 0XEC,0XED,0XEE,0XEF,0XFC,0XFD,0XFE,0XFF
  500.  
  501. LDIR__BYTES     LD HL,CPU2
  502.                 ADD HL,SP
  503.                 LD SP,HL
  504.                 LD A,(R_7FFD-CPU2)
  505.                 AND 0X10
  506.                 LD HL,B0_CPU1-CPU2
  507.                 JR Z,LDIR_BYTES5
  508.                 LD HL,B1_CPU1-CPU2
  509. LDIR_BYTES5     LD C,LOW (WIN_A0)
  510.                 LD A,3
  511. LDIR_BYTES3     EX AF,AF'
  512.                 LD E,(HL)                       ;БАЙТ ДЛЯ ЗАПИСИ В ПОРТ
  513.                 INC HL
  514.                 LD D,(HL)                       ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА
  515.                 INC HL
  516.                 LD A,D
  517.                 OR 0X3F
  518.                 LD B,A
  519.                 BIT 3,D
  520.                 JR NZ,LDIR_BYTES4
  521.                 SET 3,B
  522.                 LD A,D
  523.                 AND 3
  524.                 RRCA
  525.                 RRCA
  526.                 OUT (C),A
  527.                 RES 3,B
  528. LDIR_BYTES4     OUT (C),E
  529.                 EX AF,AF'
  530.                 DEC A
  531.                 JR NZ,LDIR_BYTES3
  532.                 EXX
  533.                 LDIR
  534.                 LD BC,WIN_P2
  535.                 XOR A
  536.                 OUT (C),A
  537.                 LD HL,CPU2
  538.                 ADD HL,SP
  539.                 LD SP,HL
  540.                 LD BC,WIN_A0
  541.                 LD A,5
  542.                 JP JUMP2PAGE
  543. ENMI_SERVICE
  544.  
  545.                 PHASE $+CPU2
  546. RST_FLAGS       DB 0                            ;1
  547. TXT_COLOR       DB 0                            ;1
  548. COORD_XY        DW 0                            ;2
  549. COLBUF          DUPL 0X20,0                     ;20 БУФЕР СОХРАНЕНИЯ ЦВЕТА С ЭКРАНА
  550. MOUSE_BUFF      DUPL 0X10,0                     ;10 БУФЕР СОХРАНЕНИЯ ЧАСТИ ЭКРАНА ПОД КУРСОРОМ МЫШИ
  551. PRESSEDKEY      DW 0                            ;2 АДРЕС СПИСКА ГОРЯЧИХ КЛАВИШ ПОСЛЕ ВЫВОДА ОКНА
  552. FLAGS           DB 0                            ;1 СИСТЕМНЫЕ ФЛАГИ
  553.                                                 ;BIT 7
  554.                                                 ;BIT 6
  555.                                                 ;BIT 5
  556.                                                 ;BIT 4-=1-ВНЕШНЕЕ ОКНО, =0-ВНУТРЕННЕ ОКНО
  557.                                                 ;BIT 3-=1-ЗАПУСК С ФАТА, =0-ЗАПУСК С ДИСКЕТЫ
  558.                                                 ;BIT 2-=1-ЧАСЫ НАЙДЕНЫ, =0-НЕТ
  559.                                                 ;BIT 1-=1-МЫШЬ ЕСТЬ, =0-НЕТ
  560.                                                 ;BIT 0-КАКОЙ КУРСОР РИСОВАТЬ, ДЛЯ МИГАНИЯ
  561. NEXTBYTERST8    DB 0                            ;1 СЛЕДУЮЩИЙ БАЙТ ПОСЛЕ ВЫЗОВА RST 8, КОД ДЛЯ ВЫЗОВА ДРАЙВЕРА
  562. KSTATE0         DB 0                            ;1 |
  563. KSTATE1         DB 0                            ;1 |
  564. KSTATE2         DB 0                            ;1 |
  565. KSTATE3         DB 0                            ;1 |
  566. KSTATE4         DB 0                            ;1 |    АНАЛОГ
  567. KSTATE5         DB 0                            ;1 |    BASIC
  568. KSTATE6         DB 0                            ;1 |    ПЕРЕМЕННЫХ
  569. KSTATE7         DB 0                            ;1 |    ОПРОСА
  570. LAST_K          DB 0                            ;1 |    КЛАВИАТУРЫ
  571. REPDEL          DB 0                            ;1 |
  572. REPPER          DB 0                            ;1 |
  573. FLAGS_KEY       DB 0                            ;1 |
  574. FLAGS_KEY1      DB 0                            ;1 |
  575. XNEW            DB 0                            ;1
  576. ADRSTR_Y        DB 0                            ;1
  577. ADRSTR_X        DB 0                            ;1
  578. NO_INW          DB 0                            ;1
  579. COLOR4SYM       DB 0                            ;1
  580. PAGE4READ       DB 0                            ;1
  581. DAT_MAIN_MENU   DB 0                            ;3
  582. COL_CURSOR      DB 0                            ;2
  583. _MORG           DB 0                            ;1
  584. ARXY            DB 0                            ;2
  585. ADR_REST        DB 0                            ;2
  586. MOUPOS          DB 0                            ;2
  587. BUFF4TXT        DB 0                            ;2B
  588. EXT4FOUND       DB 0                            ;10*3+1
  589.  
  590. ADR_CAT         EQU 0XF000                      ;1000
  591.  
  592.                 DEPHASE
  593.                 PHASE $-CPU1
  594.