Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 01.12.2014 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 0;ADR_SEL_ROM
  11.                 DUPL 8-$,0
  12.                 NOP
  13.                 JP NEW_RST8
  14.  
  15.                 DUPL ADR_SEL_ROM-$,0
  16.                 OUT (C),A                       ;ПЕРЕКЛЮЧЕНИЕ СТРАНИЦ ДЛЯ ПЕРЕХОДОВ
  17.                 NOP
  18. FOR_RET         NOP
  19.                 JP RAMSEL1
  20.  
  21. OUT_NMI         OUT (0XBE),A
  22.                 RETN
  23.  
  24.                 DUPL 0X0038-$,0XFF
  25. IM_EI_RET       EI
  26.                 RET
  27.  
  28.                 DUPL 0X0066-$,0XFF
  29.                 NOP
  30. ADR_MAGIC       JP NMI_SERVICE
  31. ADR_NMI_JUMP    EQU $-2
  32.  
  33.                 PHASE $+CPU6
  34. ;СЧИТАННАЯ КОНФИГУРАЦИЯ ПОРТОВ ДЛЯ RST 8
  35. R_BF            DB 0XFF
  36. R_77            DB 0XFF
  37. R_EFF7          DB 0XFF
  38. R_7FFD          DB 0XFF
  39. R_DOS7FFD       DB 0XFF
  40. R_RAMNROM       DB 0XFF
  41. R_1WINA3        DB 0XFF
  42. R_1WINA2        DB 0XFF
  43. R_1WINA1        DB 0XFF
  44. R_1WINA0        DB 0XFF
  45. R_0WINA3        DB 0XFF
  46. R_0WINA2        DB 0XFF
  47. R_0WINA1        DB 0XFF
  48. R_0WINA0        DB 0XFF
  49.  
  50. ;СЧИТАННАЯ КОНФИГУРАЦИЯ ПОРТОВ ДЛЯ NMI
  51. N_BF            DB 0XFF
  52. N_77            DB 0XFF
  53. N_EFF7          DB 0XFF
  54. N_7FFD          DB 0XFF
  55. N_DOS7FFD       DB 0XFF
  56. N_RAMNROM       DB 0XFF
  57. N_1WINA3        DB 0XFF
  58. N_1WINA2        DB 0XFF
  59. N_1WINA1        DB 0XFF
  60. N_1WINA0        DB 0XFF
  61. N_0WINA3        DB 0XFF
  62. N_0WINA2        DB 0XFF
  63. N_0WINA1        DB 0XFF
  64. N_0WINA0        DB 0XFF
  65. N_TEK_PALS      DUPL 0X10,0XFF
  66.  
  67. ;СОХРАНЕННЫЕ РЕГИСТРЫ ПРИ ВЫЗОВЕ RST 8
  68. RREG_FI         DB 0XFF
  69. RREG_I          DB 0XFF                         ;IF
  70. RREG_FF         DB 0XFF
  71. RREG_AA         DB 0XFF                         ;AF'
  72. RREG_IYL        DB 0XFF
  73. RREG_IYH        DB 0XFF                         ;IY
  74. RREG_IXL        DB 0XFF
  75. RREG_IXH        DB 0XFF                         ;IX
  76. RREG_LL         DB 0XFF
  77. RREG_HH         DB 0XFF                         ;HL'
  78. RREG_EE         DB 0XFF
  79. RREG_DD         DB 0XFF                         ;DE'
  80. RREG_CC         DB 0XFF
  81. RREG_BB         DB 0XFF                         ;BC'
  82. RDOS7FFD        DB 0XFF                         ;БИТЫ DOS7FFD ПЕРЕД ВЫЗОВОМ
  83. RRAMNROM        DB 0XFF                         ;БИТЫ RAMNROM ПЕРЕД ВЫЗОВОМ
  84. RPBF_CALL       DB 0XFF                         ;СОДЕРЖИМОЕ ПОРТА BF ПЕРЕД ВЫЗОВОМ
  85. RPAGE_CALL      DB 0XFF                         ;НОМЕР СТРАНИЦЫ ОТКУДА ПРИШЛИ
  86. RREG_E          DB 0XFF
  87. RREG_D          DB 0XFF                         ;DE
  88. RADRRET_L       DB 0XFF
  89. RADRRET_H       DB 0XFF                         ;ADR_RET
  90. REI_DI          DB 0XFF
  91. R_R             DB 0XFF                         ;RF
  92. RREG_C          DB 0XFF
  93. RREG_B          DB 0XFF                         ;BC
  94. RREG_F          DB 0XFF
  95. RREG_A          DB 0XFF                         ;AF
  96. RREG_L          DB 0XFF
  97. RREG_H          DB 0XFF                         ;HL
  98. RST8_SAVE_SP    DW 0XFF
  99.  
  100. ;СОХРАНЕННЫЕ РЕГИСТРЫ ПРИ ВЫЗОВЕ NMI
  101. ;ADR_RET AF' IY IX BC' DE' HL' BC DE RF IF AF HL
  102. NADRRET_L       DB 0XFF                         ;ADR RET
  103. NADRRET_H       DB 0XFF
  104. NREG_FF         DB 0XFF                         ;AF'
  105. NREG_AA         DB 0XFF
  106. NREG_IYL        DB 0XFF                         ;IY
  107. NREG_IYH        DB 0XFF
  108. NREG_IXL        DB 0XFF                         ;IX
  109. NREG_IXH        DB 0XFF
  110. NREG_CC         DB 0XFF                         ;BC'
  111. NREG_BB         DB 0XFF                
  112. NREG_EE         DB 0XFF                         ;DE'
  113. NREG_DD         DB 0XFF
  114. NREG_LL         DB 0XFF                         ;HL'
  115. NREG_HH         DB 0XFF
  116. NREG_C          DB 0XFF                         ;BC
  117. NREG_B          DB 0XFF
  118. NREG_E          DB 0XFF                         ;DE
  119. NREG_D          DB 0XFF
  120. NREG_EI_DI_2    DB 0XFF                         ;RF
  121. NREG_R          DB 0XFF
  122. NREG_EI_DI_1    DB 0XFF                         ;IF
  123. NREG_I          DB 0XFF
  124. NREG_F          DB 0XFF                         ;AF
  125. NREG_A          DB 0XFF
  126. NREG_L          DB 0XFF                         ;HL
  127. NREG_H          DB 0XFF
  128. NMI_SAVE_SP     DW 0XFF                         ;АДРЕС СОХРАНЕНИЯ СТЕКА ПРОГРАММЫ ПРЕРВАННОЙ ПО NMI
  129. INTERNAL_SP     DW 0XFF                         ;АДРЕС ХРАНЕНИЯ СТЕКА ПРИ РАБОТЕ СЕРВИСОВ
  130.  
  131. B0_CPU0         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 0 ОКНА 0 МАПЕРА
  132. P0_CPU0         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 0 ОКНА 0 МАПЕРА
  133. B0_CPU1         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 1 ОКНА 0 МАПЕРА
  134. P0_CPU1         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 1 ОКНА 0 МАПЕРА
  135. B0_CPU2         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 2 ОКНА 0 МАПЕРА                    
  136. P0_CPU2         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 2 ОКНА 0 МАПЕРА
  137. B0_CPU3         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 3 ОКНА 0 МАПЕРА                    
  138. P0_CPU3         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 3 ОКНА 0 МАПЕРА
  139. B1_CPU0         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 0 ОКНА 0 МАПЕРА                    
  140. P1_CPU0         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 0 ОКНА 0 МАПЕРА
  141. B1_CPU1         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 1 ОКНА 0 МАПЕРА                    
  142. P1_CPU1         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 1 ОКНА 0 МАПЕРА
  143. B1_CPU2         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 2 ОКНА 0 МАПЕРА                    
  144. P1_CPU2         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 2 ОКНА 0 МАПЕРА
  145. B1_CPU3         DB 0XFF                         ;БАЙТ ДЛЯ ПОРТА 3 ОКНА 0 МАПЕРА                    
  146. P1_CPU3         DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ПОРТА ДЛЯ 3 ОКНА 0 МАПЕРА
  147. B_PORT77        DB 0XFF                         ;БАЙТ ДЛЯ ВЫВОДА В ПОРТ ХХ77
  148. P_PORT77        DB 0XFF                         ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА ХХ77
  149.  
  150. F_INTEXT_DRV    DB 0XFF                         ;ФЛАГИ ПРИ ВНЕШНИХ/ВНУТРЕННИХ ВЫЗОВАХ ДРАЙВЕРОВ
  151.  
  152.                 PHASE $-CPU6
  153.                 DUPL HIGH ($)*0X100+0XFF-$,0XFF
  154.                 DW IM_EI_RET
  155.  
  156.                 DUPL HIGH ($)*0X100+0X80-$,0XFF
  157. STACK_RST
  158.  
  159.                 DUPL (HIGH ($)+1)*0X100-$,0XFF
  160. STACK_NMI
  161.  
  162.                 JP NMI_EXIT_DBG
  163.  
  164. RAMSEL1        
  165.                 LD (RST8_SAVE_SP-CPU6),SP       ;СОХРАНИЛИ СТАРЫЙ СТЕК
  166.                 LD SP,RREG_E-CPU6
  167.                 PUSH HL                         ;НОМЕР СТРАНИЦЫ ОТКУДА ПРИШЛИ И СОДЕРЖИМОЕ ПОРТА BF
  168.                 PUSH DE                         ;БИТЫ RAMNROM+DOS7FFD
  169.                 EXX
  170.                 PUSH BC                         ;BC'
  171.                 PUSH DE                         ;DE'
  172.                 PUSH HL                         ;HL'
  173.                 EXX
  174.                 PUSH IX                         ;IX
  175.                 PUSH IY                         ;IY
  176.                 EX AF,AF'
  177.                 PUSH AF                         ;AF'
  178.                 LD A,I
  179.                 PUSH AF                         ;IF
  180.                 LD HL,OUT_NMI
  181.                 LD (ADR_NMI_JUMP),HL
  182.                 LD A,0XC9
  183.                 LD (FOR_RET),A
  184.                 XOR A
  185.                 LD I,A
  186.                 LD HL,(RST8_SAVE_SP-CPU6)
  187.                 LD DE,RREG_E-CPU6
  188.                 LD BC,RREG_H-RPAGE_CALL
  189.                 LDIR
  190.                 LD HL,R_77-CPU6
  191.                 LD BC,RD_77
  192.                 INIR
  193.                 INI
  194.                 LD HL,(RDOS7FFD-CPU6)
  195.                 LD (R_DOS7FFD-CPU6),HL
  196.                 LD SP,STACK_RST
  197.                 LD A,(R_77-CPU6)
  198.                 AND 7
  199.                 OR 0XA0;8                       ;ВЫКЛЮЧЕНИЕ ТУРБО 14 МГЦ
  200.                 LD BC,0XFF77
  201.                 OUT (C),A
  202.                 PEC_OFF SHADOW_BF
  203.                 LD BC,PENT_CONF
  204.                 LD A,(R_EFF7-CPU6)
  205.                 AND %11101111
  206.                 OUT (C),A                       ;ВКЛЮЧЕНИЕ ТУРБО 7 МГЦ
  207.                 PEC_ON SHADOW_BF
  208.                 LD A,(R_7FFD-CPU6)
  209.                 AND 0X10
  210.                 LD HL,R_0WINA0-CPU6
  211.                 JR Z,RAMSEL3
  212.                 LD HL,R_1WINA0-CPU6
  213. RAMSEL3         LD A,(RPAGE_CALL-CPU6)
  214.                 LD (HL),A
  215.                 ATMPORT WIN_A3,0X40
  216.                 LD BC,WIN_P6
  217.                 XOR A
  218.                 OUT (C),A
  219.                 LD BC,WIN_A0
  220.                 LD A,P_RST8
  221.                 LD HL,CPU6
  222.                 ADD HL,SP
  223.                 LD SP,HL
  224.                 LD HL,CONT_RST8                 ;АДРЕС ПРОДОЛЖЕНИЯ ОБРАБОТКИ RST 8
  225.                 PUSH HL
  226.                 JP ADR_SEL_ROM
  227.  
  228. P4_EXIT_RST8    LD HL,NMI_SERVICE
  229.                 LD (ADR_NMI_JUMP),HL
  230.                 XOR A
  231.                 LD (FOR_RET),A
  232.                 PEC_OFF SHADOW_BF
  233.                 LD BC,PENT_CONF
  234.                 LD A,(R_EFF7-CPU6)
  235.                 OUT (C),A
  236.                 PEC_ON SHADOW_BF
  237.                 LD C,LOW (WIN_A5)
  238.                 LD A,(R_7FFD-CPU6)
  239.                 AND 0X10
  240.                 LD HL,B0_CPU1-CPU2
  241.                 JR Z,RENS11
  242.                 LD HL,B1_CPU1-CPU2
  243. RENS11          LD A,3
  244. RENS12          EX AF,AF'
  245.                 LD E,(HL)                       ;БАЙТ ДЛЯ ЗАПИСИ В ПОРТ
  246.                 INC HL
  247.                 LD D,(HL)                       ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА
  248.                 INC HL
  249.                 LD A,D
  250.                 OR 7
  251.                 LD B,A
  252.                 OUT (C),E
  253.                 EX AF,AF'
  254.                 DEC A
  255.                 JR NZ,RENS12
  256.                 LD HL,RST8_SAVE_SP-(RREG_H-RPAGE_CALL)-CPU6
  257.                 LD DE,(RST8_SAVE_SP-CPU6)
  258.                 LD BC,RREG_H-RPAGE_CALL
  259.                 LDIR
  260.                 LD BC,(B_PORT77-CPU6)
  261.                 LD A,C
  262.                 LD C,0X77
  263.                 OUT (C),A
  264.                 LD SP,RREG_FI-CPU6
  265.                 POP AF
  266.                 LD I,A
  267.                 POP AF
  268.                 EX AF,AF'
  269.                 POP IY
  270.                 POP IX
  271.                 POP HL
  272.                 POP DE
  273.                 POP BC
  274.                 EXX
  275.                 POP DE
  276.                 POP HL
  277.                 LD SP,(RST8_SAVE_SP-CPU6)       ;ВОССТАНОВИЛИ СТЕК ВЫЗВАШЕЙ ПРОГРАММЫ
  278.                 LD BC,ADR_RST8END               ;АДРЕС ВОЗВРАТА
  279.                 PUSH BC
  280.                 LD C,LOW (WIN_A0)
  281.                 LD A,(R_7FFD-CPU6)
  282.                 AND 0X10
  283.                 LD DE,(B0_CPU0-CPU6)
  284.                 JR Z,RENS13
  285.                 LD DE,(B1_CPU0-CPU6)
  286. RENS13          LD A,D
  287.                 OR 7
  288.                 LD B,A
  289.                 LD A,E                          ;СТРАНИЦА ROM КУДА ВОЗВРАЩАТЬСЯ
  290.                 JP ADR_SEL_ROM
  291.  
  292. NMI_SERVICE     LD (NMI_SAVE_SP-CPU6),SP        ;СОХРАНЕНИЕ СТЕКА
  293.                 LD SP,NMI_SAVE_SP-CPU6          ;НОВЫЙ СТЕК
  294.                 PUSH HL                         ;СОХРАНИЛИ HL
  295.                 PUSH AF                         ;СОХРАНИЛИ AF
  296.                 LD A,I
  297.                 PUSH AF                         ;СОХРАНИЛИ I, ФЛАГИ И РЕЖИМ ПРЕРЫВАНИЙ
  298.                 LD A,R
  299.                 PUSH AF                         ;СОХРАНИЛИ R
  300.                 PUSH DE                         ;СОХРАНИЛИ DE
  301.                 PUSH BC                         ;СОХРАНИЛИ BC
  302.                 EXX
  303.                 PUSH HL                         ;СОХРАНИЛИ АЛЬТ HL
  304.                 PUSH DE                         ;СОХРАНИЛИ АЛЬТ DE
  305.                 PUSH BC                         ;СОХРАНИЛИ АЛЬТ BC
  306.                 PUSH IX                         ;СОХРАНИЛИ IX
  307.                 PUSH IY                         ;СОХРАНИЛИ IY
  308.                 EX AF,AF'
  309.                 PUSH AF                         ;СОХРАНИЛИ АЛЬТ AF
  310.                 LD HL,(NMI_SAVE_SP-CPU6)
  311.                 LD E,(HL)
  312.                 INC HL
  313.                 LD D,(HL)
  314.                 LD HL,(NREG_F-CPU6)
  315.                 AND A
  316.                 SBC HL,DE
  317.                 JR NZ,NMISERV005
  318.                 LD HL,(NMI_SAVE_SP-CPU6)
  319.                 INC HL
  320.                 INC HL
  321.                 LD (NMI_SAVE_SP-CPU6),HL
  322.                 LD E,(HL)
  323.                 INC HL
  324.                 LD D,(HL)
  325. NMISERV005      PUSH DE
  326.                 LD SP,STACK_NMI
  327.                 LD HL,OUT_NMI
  328.                 LD (ADR_NMI_JUMP),HL
  329.                 LD A,0XC9
  330.                 LD (FOR_RET),A                  ;RET ДЛЯ ПЕРЕКЛЮЧЕНИЯ СТРАНИЦ ROM/RAM
  331.                 LD A,0X80-0X0C
  332.                 LD HL,NREG_R-CPU6
  333.                 SLA (HL)
  334.                 RLA
  335.                 ADD A,(HL)
  336.                 RRCA
  337.                 LD (HL),A
  338.                 LD HL,N_BF-CPU6                 ;АДРЕС СОХРАНЕНИЯ ПРОЧИТАННЫХ РЕГИСТРОВ КОНФИГУРАЦИИ
  339.                 IN A,(PEVO_CONF)
  340.                 LD (HL),A
  341.                 INC HL
  342.                 LD BC,RD_77
  343. NMISERV002      INIR
  344.                 INI
  345.                 XOR A
  346.                 LD I,A                          ;ОБРАБОТЧИК ПРЕРЫВАНИЯ ПЕРЕСТАВИЛИИ ДЛЯ АДРЕСА 00FF
  347.                 PEC_ON SHADOW_BF
  348.  
  349. ;               LD DE,0XA70F                    ;ДАЛЬШЕ СОХРАНЯЕМ ТЕКУЩУЮ ПАЛИТРУ
  350. ;               LD BC,0XBD77
  351. ;               OUT (C),D                       ;ВКЛЮЧЕНИЕ ТЕКСТМОДА
  352. ;               LD (ADR_PALITRA),HL
  353. ;               LD BC,RD_PALITRA
  354. ;               EI
  355. ;               HALT
  356. ;               DI
  357. ;NMISERV003     LD A,E
  358. ;               BIT 3,E
  359. ;               OUT (0XFE),A
  360. ;               JR Z,NMISERV004
  361. ;               OUT (0XF6),A
  362. ;NMISERV004     IN A,(C)
  363. ;               LD (HL),A
  364. ;               INC HL
  365. ;               DEC E
  366. ;               JP P,NMISERV003                 ;ПАЛИТРУ СОХРАНИЛИ
  367. ;               LD HL,MAGIC_PAL
  368. ;               LD E,0X0F
  369. ;SETPAL1                LD A,E
  370. ;               BIT 3,E
  371. ;               OUT (0XFE),A
  372. ;               JR Z,$+4
  373. ;               OUT (0XF6),A
  374. ;               LD A,(HL)
  375. ;               INC HL
  376. ;               OR %00001100
  377. ;               OUT (0XFF),A
  378. ;               DEC E
  379. ;               JP P,SETPAL1
  380. ;               LD BC,0XFF77
  381. ;               OUT (C),D
  382.  
  383.                 LD BC,WIN_P6
  384.                 XOR A
  385.                 OUT (C),A                       ;ВКЛЮЧИЛИ ПОСЛЕДНЮЮ СТРАНИЦУ ОЗУ
  386.                 LD B,HIGH (WIN_A3)
  387.                 LD A,0X40
  388.                 OUT (C),A                       ;СНЯЛИ ЗАВИСИМОСТЬ 3 ОКНА ОТ ПОРТА 7FFD
  389.                 LD DE,CPU6
  390.                 ADD HL,DE
  391.                 LD (ADR_PALITRA),HL
  392.                 LD HL,CPU6
  393.                 ADD HL,SP
  394.                 LD SP,HL
  395.                 LD B,HIGH (WIN_A0)
  396.                 LD A,P_RST8
  397.                 OUT (C),A
  398. ;PEREHVAT       DUPL 3,0
  399. ;               LD A,(DEBUG_ONOFF)
  400. ;               AND A
  401. ;               JR NZ,IN_DEBUG
  402.                 LD HL,CONTINUE_MAGIC
  403.                 PUSH HL
  404.                 JP OUT_NMI
  405.  
  406. ;IN_DEBUG       XOR A
  407. ;               IN A,(0XFE)
  408. ;               CPL
  409. ;               AND 0X1F
  410. ;               JR NZ,IN_DEBUG
  411. ;               LD B,HIGH (WIN_P0)
  412. ;               LD A,PAGE_STS
  413. ;               OUT (C),A
  414. ;               LD HL,DEBUGGER
  415. ;               PUSH HL
  416. ;               JP OUT_NMI
  417.  
  418. ;ВЫХОД ИЗ МАГИКА
  419. EXITNMISERVICE  LD HL,ADR_MAGIC
  420.                 LD (HL),0XC9                    ;ЗАГЛУШКА НА MAGIC
  421.                 IN A,(PEVO_CONF)
  422.                 OR NMI_BF       ;SET 3,A
  423.                 OUT (PEVO_CONF),A
  424.                 AND NMI_BF!0XFF ;RES 3,A
  425.                 OUT (PEVO_CONF),A
  426.                 HALT                            ;ЖДЕМ СРАБАТЫВАНИЯ MAGIC
  427. FALSE_NMI       LD HL,ADR_MAGIC
  428.                 LD (HL),0XC3                    ;РАЗРЕШЕНИЕ ОБРАБОТЧИКА MAGIC ПЕРЕД ВЫХОДОМ
  429.  
  430. ;               LD HL,0
  431. ;ADR_PALITRA    EQU $-2
  432. ;               LD A,(N_77-CPU6)
  433. ;               LD E,0X0F
  434. ;               AND E
  435. ;               OR 0XA0
  436. ;               LD D,A
  437. ;               LD BC,0XBD77                    ;ДОСТУП К ПАЛИТРЕ
  438. ;               OUT (C),D                       ;ВКЛ.PAL
  439. ;SETPAL0                LD A,E
  440. ;               BIT 3,E
  441. ;               OUT (0XFE),A
  442. ;               JR Z,$+4
  443. ;               OUT (0XF6),A
  444. ;               LD A,(HL)
  445. ;               INC HL
  446. ;               OR %00001100
  447. ;               OUT (0XFF),A
  448. ;               DEC E
  449. ;               JP P,SETPAL0
  450. ;               LD BC,0XFF77
  451. ;               OUT (C),D
  452.  
  453.                 LD C,LOW (WIN_A0)
  454.                 LD A,(N_7FFD-CPU6)
  455.                 AND 0X10
  456.                 LD HL,B0_CPU0-CPU6
  457.                 JR Z,ENS11
  458.                 LD HL,B1_CPU0-CPU6
  459. ENS11           LD A,4
  460. ENS12           EX AF,AF'
  461.                 LD E,(HL)                       ;БАЙТ ДЛЯ ЗАПИСИ В ПОРТ
  462.                 INC HL
  463.                 LD D,(HL)                       ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА
  464.                 INC HL
  465.                 LD A,D
  466.                 OR 0X3F
  467.                 LD B,A
  468.                 BIT 3,D
  469.                 JR NZ,ENS15
  470.                 LD A,D
  471.                 AND 3
  472.                 RRCA
  473.                 RRCA
  474.                 OUT (C),A
  475.                 RES 3,B
  476. ENS15           OUT (C),E
  477.                 EX AF,AF'
  478.                 DEC A
  479.                 JR NZ,ENS12
  480.                 PEC_OFF SHADOW_BF
  481.                 LD BC,PENT_CONF
  482.                 LD A,(N_EFF7-CPU6)
  483.                 OUT (C),A
  484.                 PEC_ON SHADOW_BF
  485.                 LD BC,(B_PORT77-CPU6)
  486.                 LD A,C
  487.                 LD C,0X77
  488.                 OUT (C),A
  489.                 LD A,(N_BF-CPU6)
  490.                 OUT (PEVO_CONF),A
  491.                 LD BC,CONF_128
  492.                 LD A,(N_7FFD-CPU6)
  493.                 OUT (C),A
  494.                 LD HL,NMI_SERVICE
  495.                 LD (ADR_NMI_JUMP),HL
  496.                 XOR A
  497.                 LD (FOR_RET),A
  498.                 LD SP,NADRRET_L-CPU6
  499.                
  500. ;               POP AF                          ;СБРОС АДРЕСА ВОЗВРАТА
  501.                 LD HL,(NMI_SAVE_SP-CPU6)
  502.                 POP DE
  503.                 LD (HL),E
  504.                 INC HL
  505.                 LD (HL),D                       ;ВОССТАНОВЛЕНИЕ АДРЕСА ВОЗВРАТА
  506.  
  507.                 POP AF
  508.                 EX AF,AF'
  509.                 POP IY
  510.                 POP IX
  511.                 POP BC
  512.                 POP DE
  513.                 POP HL
  514.                 EXX
  515.                 POP BC
  516.                 POP DE
  517. ;               EI
  518. ;               HALT
  519. ;               DI
  520.                 POP AF
  521.                 JP PO,ENMISERV1
  522.                 EI
  523. ENMISERV1       LD A,0X80-0X0A
  524.                 LD HL,NREG_R-CPU6
  525.                 SLA (HL)
  526.                 RLA
  527.                 ADD A,(HL)
  528.                 RRCA
  529.                 LD R,A
  530.                 POP AF
  531.                 LD I,A
  532.                 POP AF
  533.                 POP HL
  534.                 LD SP,(NMI_SAVE_SP-CPU6)
  535.                 OUT (0XBE),A
  536.                 RETN
  537.  
  538. ;MAGIC_PAL      DB 0X0C,0X2D,0X4E,0X6F,0X9C,0XBD,0XDE,0XFF
  539. ;               DB 0XEC,0XED,0XEE,0XEF,0XFC,0XFD,0XFE,0XFF
  540.  
  541. LDIR__BYTES     LD HL,CPU6
  542.                 ADD HL,SP
  543.                 LD SP,HL
  544.                 LD A,(R_7FFD-CPU6)
  545.                 AND 0X10
  546.                 LD HL,B0_CPU1-CPU2
  547.                 JR Z,LDIR_BYTES5
  548.                 LD HL,B1_CPU1-CPU2
  549. LDIR_BYTES5     LD C,LOW (WIN_A0)
  550.                 LD A,3
  551. LDIR_BYTES3     EX AF,AF'
  552.                 LD E,(HL)                       ;БАЙТ ДЛЯ ЗАПИСИ В ПОРТ
  553.                 INC HL
  554.                 LD D,(HL)                       ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА
  555.                 INC HL
  556.                 LD A,D
  557.                 OR 0X3F
  558.                 LD B,A
  559.                 BIT 3,D
  560.                 JR NZ,LDIR_BYTES4
  561.                 LD A,D
  562.                 AND 3
  563.                 RRCA
  564.                 RRCA
  565.                 OUT (C),A
  566.                 RES 3,B
  567. LDIR_BYTES4     OUT (C),E
  568.                 EX AF,AF'
  569.                 DEC A
  570.                 JR NZ,LDIR_BYTES3
  571.                 EXX
  572.                 LDIR
  573.                 LD BC,WIN_P6
  574.                 XOR A
  575.                 OUT (C),A
  576.                 LD HL,CPU6
  577.                 ADD HL,SP
  578.                 LD SP,HL
  579.                 LD BC,WIN_A0
  580.                 LD A,P_RST8
  581.                 JP ADR_SEL_ROM
  582.  
  583. NEW_RST8        JP $
  584.  
  585.                 PHASE $+CPU6
  586. ;ВЫЗОВ ПОДПРОГРАММ ИЗ ДРУГИХ СТРАНИЦ
  587. CALL2PAGE       EX (SP),HL
  588.                 PUSH BC
  589.                 PUSH AF
  590.                 LD C,(HL)
  591.                 INC HL
  592.                 LD B,(HL)
  593.                 INC HL
  594.                 LD (ADRCALL),BC
  595.                 LD BC,RD_7FFD
  596.                 IN A,(C)
  597.                 AND 0X10
  598.                 LD BC,RD_0WINA0
  599.                 JR Z,CALL2PAGE1
  600.                 LD BC,RD_1WINA0
  601. CALL2PAGE1      IN A,(C)
  602.                 AND 0X3F
  603.                 LD BC,STEK_PAGES
  604. TEKPAGE         EQU $-2
  605.                 LD (BC),A
  606.                 INC BC
  607.                 LD (TEKPAGE),BC
  608.                 LD A,(HL)
  609.                 INC HL
  610.                 LD BC,WIN_A0
  611.                 OUT (C),A
  612.                 POP AF
  613.                 POP BC
  614.                 EX (SP),HL
  615.                 CALL 0
  616. ADRCALL         EQU $-2
  617.                 PUSH BC
  618.                 PUSH AF
  619.                 LD BC,(TEKPAGE)
  620.                 DEC BC
  621.                 LD A,(BC)
  622.                 LD (TEKPAGE),BC
  623.                 LD BC,WIN_A0
  624.                 OUT (C),A
  625.                 POP AF
  626.                 POP BC
  627.                 RET
  628.  
  629. ;ВХОД В ОТЛАДЧИК
  630. DEBUGGER        DI
  631.                 LD HL,CPU6+DEBUG_ONOFF
  632.                 BIT 7,(HL)
  633.                 JR Z,DEBUGGER1
  634. ;ПРИНУДИТЕЛЬНЫЙ ВХОД В ОТЛАДЧИК С ВОЗВРАТОМ В ОСНОВНОЕ МЕНЮ NMI
  635.                 LD HL,JMP2MAINMENU
  636.                 PUSH HL
  637.                 JR DEBUGGER2
  638.  
  639. ;ВХОД В ОТЛАДЧИК ИЗ ОСНОВНОГО МЕНЮ NMI
  640. DEBUGGER1       LD HL,RESTART_MAIN
  641.                 PUSH HL
  642.                 LD HL,EXIT_DEBUG
  643.                 PUSH HL
  644.                 LD HL,CPU6+DEBUG_ONOFF
  645.                 SET 7,(HL)
  646. DEBUGGER2       LD HL,CONTINUE_PROG
  647.                 LD DE,NADRRET_L
  648.                 EVOPORT WIN_P3,PAGE_STS         ;ВКЛЮЧИЛИ СТРАНИЦУ С УСТАНОВЛЕННЫМ STS
  649.                 LD BC,N_BF
  650.                 LD A,(N_77)
  651.                 EX AF,AF'
  652.                 LD A,NO_EXIT_DEBUG-EXIT_DEBUG
  653.                 JP START_STS
  654.  
  655. ;НОРМАЛЬНЫЙ ВЫХОД ИЗ ОТЛАДЧИКА
  656. EXIT_DEBUG      LD HL,CPU6+DEBUG_ONOFF
  657.                 RES 7,(HL)
  658. ;ВЫХОД ИЗ ОТЛАДЧИКА МИНУЯ ОСНОВНОЕ МЕНЮ NMI
  659. NO_EXIT_DEBUG   EVOPORT WIN_A0,P_ADDONS
  660.                 LD HL,CPU6+DEBUG_ONOFF
  661.                 LD A,TRACE_DBG
  662.                 AND (HL)
  663.                 RET Z
  664.                 LD HL,TRACER_DBG
  665.                 EX (SP),HL
  666.                 RET
  667.  
  668. ;ВХОД В ОТЛАДЧИК МИНУЯ ОСНОВНОЕ МЕНЮ NMI
  669. JMP2MAINMENU    LD HL,CPU6+DEBUG_ONOFF
  670.                 RES 7,(HL)
  671.                 EVOPORT WIN_A0,P_RST8
  672.                 LD HL,CPU6+DEBUG_ONOFF
  673.                 LD A,TRACE_DBG
  674.                 AND (HL)
  675.                 JP NZ,CONTMAGIC3
  676.                 JP RESTART_NMI
  677.  
  678. ;ВОЗВРАТ ИЗ NMI ДЛЯ ОТЛАДЧИКА. НЕ ВОССТАНАВЛИВАЕТСЯ:
  679. ;ПАЛИТРА, ФОНТ, ВИДЕОРЕЖИМ
  680. NMI_EXIT_DBG    EVOPORT WIN_A0,P_ADDONS
  681.                 PCALL RESTORE_AY,P_RST8         ;ВОССТАНОВЛЕНИЕ РАГИСТРОВ AY
  682.                 LD HL,ADR_MAGIC
  683.                 LD (HL),0XC9                    ;ЗАГЛУШКА НА MAGIC
  684.                 IN A,(PEVO_CONF)
  685.                 OR NMI_BF
  686.                 OUT (PEVO_CONF),A
  687.                 AND NMI_BF!0XFF
  688.                 OUT (PEVO_CONF),A
  689.                 HALT                            ;ЖДЕМ СРАБАТЫВАНИЯ MAGIC
  690.                 LD HL,ADR_MAGIC
  691.                 LD (HL),0XC3                    ;РАЗРЕШЕНИЕ ОБРАБОТЧИКА MAGIC ПЕРЕД ВЫХОДОМ
  692.                 LD C,LOW (WIN_A0)
  693.                 LD A,(N_7FFD-CPU6)
  694.                 AND 0X10
  695.                 LD HL,B0_CPU0-CPU6
  696.                 JR Z,ENSDBG11
  697.                 LD HL,B1_CPU0-CPU6
  698. ENSDBG11        LD A,4
  699. ENSDBG12        EX AF,AF'
  700.                 LD E,(HL)                       ;БАЙТ ДЛЯ ЗАПИСИ В ПОРТ
  701.                 INC HL
  702.                 LD D,(HL)                       ;СТАРШИЙ БАЙТ АДРЕСА ПОРТА
  703.                 INC HL
  704.                 LD A,D
  705.                 OR 0X3F
  706.                 LD B,A
  707.                 BIT 3,D
  708.                 JR NZ,ENSDBG15
  709.                 LD A,D
  710.                 AND 3
  711.                 RRCA
  712.                 RRCA
  713.                 OUT (C),A
  714.                 RES 3,B
  715. ENSDBG15        OUT (C),E
  716.                 EX AF,AF'
  717.                 DEC A
  718.                 JR NZ,ENSDBG12
  719.                 PEC_OFF SHADOW_BF
  720.                 LD BC,PENT_CONF
  721.                 LD A,(N_EFF7-CPU6)
  722.                 OUT (C),A
  723.                 PEC_ON SHADOW_BF
  724. ;               LD BC,(B_PORT77-CPU6)
  725. ;               LD A,C
  726. ;               LD C,0X77
  727. ;               OUT (C),A
  728.                 LD A,(N_BF-CPU6)
  729.                 OUT (PEVO_CONF),A
  730.                 LD BC,CONF_128
  731.                 LD A,(N_7FFD-CPU6)
  732.                 OUT (C),A
  733.                 LD HL,NMI_SERVICE
  734.                 LD (ADR_NMI_JUMP),HL
  735.                 XOR A
  736.                 LD (FOR_RET),A
  737.                 LD SP,NADRRET_L-CPU6
  738.                 POP AF                          ;СБРОС АДРЕСА ВОЗВРАТА
  739.                 POP AF
  740.                 EX AF,AF'
  741.                 POP IY
  742.                 POP IX
  743.                 POP BC
  744.                 POP DE
  745.                 POP HL
  746.                 EXX
  747.                 POP BC
  748.                 POP DE
  749. ;               EI
  750. ;               HALT
  751. ;               DI
  752.                 POP AF
  753.                 JP PO,ENMIDBGSERV1
  754.                 EI
  755. ENMIDBGSERV1    LD A,0X80-0X0A
  756.                 LD HL,NREG_R-CPU6
  757.                 SLA (HL)
  758.                 RLA
  759.                 ADD A,(HL)
  760.                 RRCA
  761.                 LD R,A
  762.                 POP AF
  763.                 LD I,A
  764.                 POP AF
  765.                 POP HL
  766.                 LD SP,(NMI_SAVE_SP-CPU6)
  767.                 OUT (0XBE),A
  768.                 RETN
  769.  
  770. SET_CPU3        PUSH BC
  771.                 LD BC,WIN_A3
  772.                 EX AF,AF'
  773.                 LD A,0X40
  774.                 OUT (C),A
  775.                 EX AF,AF'
  776.                 LD B,HIGH (WIN_P3)
  777.                 OUT (C),A
  778.                 POP BC
  779.                 RET
  780.  
  781. STEK_PAGES      DUPL 0X10,0XFF                  ;10
  782. RST_FLAGS       DB 0XFF                         ;1
  783. TXT_COLOR       DB 0XFF                         ;1
  784. COORD_XY        DW 0XFF                         ;2
  785. COLBUF          DUPL 0X50,0XFF                  ;50 БУФЕР СОХРАНЕНИЯ СТРОКИ ЦВЕТА С ЭКРАНА
  786. MOUSE_BUFF      DUPL 0X10,0XFF                  ;10 БУФЕР СОХРАНЕНИЯ ЧАСТИ ЭКРАНА ПОД КУРСОРОМ МЫШИ
  787. PRESSEDKEY      DW 0XFFFF                       ;2 АДРЕС СПИСКА ГОРЯЧИХ КЛАВИШ ПОСЛЕ ВЫВОДА ОКНА
  788. FLAGS           DB 0XFF                         ;1 СИСТЕМНЫЕ ФЛАГИ
  789.                                                 ;BIT 7-=1-TXT, =0-ZX SCREEN MODE
  790.                                                 ;BIT 6
  791.                                                 ;BIT 5
  792.                                                 ;BIT 4-=1-ВНЕШНЕЕ ОКНО, =0-ВНУТРЕННЕ ОКНО
  793.                                                 ;BIT 3-=1-ЗАПУСК С ФАТА, =0-ЗАПУСК С ДИСКЕТЫ
  794.                                                 ;BIT 2-=1-ЧАСЫ НАЙДЕНЫ, =0-НЕТ
  795.                                                 ;BIT 1-=1-МЫШЬ ЕСТЬ, =0-НЕТ
  796.                                                 ;BIT 0-КАКОЙ КУРСОР РИСОВАТЬ, ДЛЯ МИГАНИЯ
  797. NEXTBYTERST8    DB 0XFF                         ;1 СЛЕДУЮЩИЙ БАЙТ ПОСЛЕ ВЫЗОВА RST 8, КОД ДЛЯ ВЫЗОВА ДРАЙВЕРА
  798. OLD_STACK       DW 0XFFFF                       ;2
  799. ADR_INT         DW 0XFFFF                       ;2
  800. ADR_PALITRA     DW 0XFFFF                       ;2
  801. XNEW            DB 0XFF                         ;1
  802. ADRSTR_Y        DB 0XFF                         ;1
  803. ADRSTR_X        DB 0XFF                         ;1
  804. TXNEW           DB 0XFF                         ;1
  805. TADRSTR_Y       DB 0XFF                         ;1
  806. TADRSTR_X       DB 0XFF                         ;1
  807. NO_INW          DB 0XFF                         ;1
  808. COLOR4SYM       DB 0XFF                         ;1
  809. PAGE4READ       DB 0XFF                         ;1
  810. PAGE4SCR        DB 0XFF                         ;1
  811. DAT_MAIN_MENU   DUPL 3,0                        ;3
  812. DAT_SETUP_MENU  DUPL 3,0                        ;3
  813. DAT_FILEBROWS   DUPL 5,0                        ;5
  814. DAT_MOUNT       DUPL 3,0                        ;3
  815. WIN_DEV         DUPL 0X30,0                     ;30
  816. COL_CURSOR      DW 0XFFFF                       ;2
  817. _MORG           DB 0XFF                         ;1
  818. ARXY            DW 0XFFFF                       ;2
  819. ADR_REST        DW 0XFFFF                       ;2
  820. MOUPOS          DW 0XFFFF                       ;2
  821. TEK_MODES       DB 0XFF                         ;1
  822. CMP_FONT_FLAG   DB 0XFF                         ;1
  823. BUFF4TXT        DUPL 0X2B,0XFF                  ;2B
  824. EXT4FOUND       DUPL 0X10*3+1,0XFF              ;10*3+1
  825. CMOS4CRC16      DUPL ECMOS_DEFAULT-CMOS_DEFAULT,0XFF
  826. KSTATE0         DB 0XFF                         ;1 |
  827. KSTATE1         DB 0                            ;1 |
  828. KSTATE2         DB 0                            ;1 |
  829. KSTATE3         DB 0                            ;1 |
  830. KSTATE4         DB 0XFF                         ;1 |    АНАЛОГ
  831. KSTATE5         DB 0                            ;1 |    BASIC
  832. KSTATE6         DB 0                            ;1 |    ПЕРЕМЕННЫХ
  833. KSTATE7         DB 0                            ;1 |    ОПРОСА
  834. LAST_K          DB 0                            ;1 |    КЛАВИАТУРЫ
  835. REPDEL          DB 0X10                         ;1 |
  836. REPPER          DB 1                            ;1 |
  837. FLAGS_KEY       DB 0                            ;1 |
  838. FLAGS_KEY1      DB 0X10                         ;1 |
  839. MOUNT_SYM       DB 0XFF                         ;1
  840. EXT_TYPE        DB 0XFF                         ;1
  841. OST_HWOST       DW 0XFFFF                       ;2
  842. KUDA_HWOST      DW 0XFFFF                       ;2
  843. SCROLL_MODE     DB 0XFF                         ;1
  844. NEXT4PAGE       DW 0XFFFF                       ;2
  845. OSTAT_SECT      DW 0XFFFF                       ;2
  846. NACH_SECT       DW 0XFFFF                       ;2
  847. START_DATA      DW 0XFFFF                       ;2
  848. AY_REGS         DUPL 0X0E,0XFF                  ;D
  849. TEKBUFTSC       DW 0XFFFF                       ;2
  850. TEK_TEXT        DW 0XFFFF                       ;2
  851. TURBO_MODE      DUPL 5,0XFF                     ;5
  852. MEMORY_MODE     DUPL 4,0XFF                     ;3
  853. BUFF_TIME       DB 0X16,0X00,0X48,0X17,CYAN<<3+BLUE+0XC0
  854. TXT_TIME        DB "00:00:00",0X16,0X01,0X48
  855. TXT_DATA        DB "00.00.00",0X17,0XFF,0
  856. EBUFF_TIME
  857. NAME_RAMDISK    DUPL 0X20,0
  858. FILE_DEST       DUPL 0X20,0XFF                  ;20 ОПИСАТЕЛЬ ОТКРЫТОГО ФАЙЛА (КУДА)
  859. FB_EXT          DUPL 0X0B,0XFF                  ;B БУФЕР 8.3 ДЛЯ ПОИСКА ИМЕНИ
  860. SAVE_IY         DW 0XFFFF                       ;2 ВНУТРЕНЕЕ СОХРАНЕНИЕ РЕГИСТРОВ ДЛЯ ДАЛЬНЕЙШЕГО ИСПОЛЬЗОВАНИЯ
  861. ADR_MASK_EXT    DW 0XFFFF                       ;2 АДРЕС РАСШИРЕНИЙ ФАЙЛОВ ДЛЯ ПОИСКА
  862. ADR_SKLAD       DW 0XFFFF                       ;2 АДРЕС СКЛАДИРОВАНИЯ НАЙДЕННОГО
  863. ADR_SKLAD_NAME  DW 0XFFFF                       ;2
  864. MAKS_ADR        DB 0XFF                         ;1 СТАРШИЙ БАЙТ МАКСИМАЛЬНОГО АДРЕСА БУФЕРА СКЛАДИРОВАНИЯ
  865. KOL_FOUNDED     DW 0XFFFF                       ;2 КОЛИЧЕСТВО НАЙДЕННЫХ ОПИСАТЕЛЕЙ
  866. OUT_NAME_FILE   DB 0X17,0XFF,0X16,0,0,0
  867. OUT_NAME_FILET  EQU $-3
  868. BUF_FILEITEM    DUPL 0X20,0XFF                  ;20
  869. EXTERN_PAL      DUPL 0X10,0XFF                  ;10
  870. ENMI_SERVICE
  871. HDDTIMEOUT      EQU EXTERN_PAL+0X10             ;1
  872.  
  873.                 DEPHASE
  874.                 PHASE $-CPU6
  875.