Subversion Repositories pentevo

Rev

Rev 680 | Rev 764 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

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