Subversion Repositories pentevo

Rev

Rev 702 | 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.                 PHASE CPU0
  5.                 JP $
  6.  
  7.                 DUPL 0X0008-$,0XFF
  8.                 JP $
  9.  
  10.                 DUPL 0X0010-$,0XFF
  11.                 JP $
  12.  
  13.                 DUPL ADR_SEL_ROM-$,0XFF
  14.                 OUT (C),A                       ;0014
  15.                 NOP
  16.                 RET
  17.  
  18.                 DUPL 0X0018-$,0XFF
  19.                 JP $
  20.  
  21.                 DUPL 0X0020-$,0XFF
  22.                 JP $
  23.  
  24.                 DUPL 0X0028-$,0XFF
  25.                 JP $
  26.  
  27.                 DUPL 0X0030-$,0XFF
  28.                 JP CALL2PAGE
  29.  
  30.                 DUPL ADR_PERFECT-$,0XFF
  31.                 DW PERFECTCOM
  32.  
  33.                 DUPL 0X0038-$,0XFF              ;0038
  34.                 EI
  35.                 RET
  36.  
  37.                 DUPL 0X003E-$,0XFF
  38.                 EI
  39.                 RET
  40.  
  41.                 DUPL 0X0040-$,0XFF
  42.                 JP INSTALL_NMIRST               ;УСТАНОВКА ОБРАБОТЧИКОВ NMI И RST
  43.  
  44.                 DUPL 0X0080-$,0XFF
  45.                 binclude ../../dec40.bin
  46.  
  47.                 DUPL 0X00FF-$,0XFF
  48.                 DW 0X0038
  49.  
  50.                 PHASE $+0X4000
  51.                 include rst8_data.a80
  52.  
  53.                 PHASE $&0X3FFF
  54. CP866_UTL       binclude 8x8_ar_pack.bin  
  55. CP866_FONT      binclude 866_code_pack.bin
  56. ATM_FONT        binclude atm_code_pack.bin
  57.  
  58.                 DUPL (HIGH ($)+1)*0X100-$,0XFF
  59. BUF_CRC16_TABL  DB 0X00,0X10,0X20,0X30,0X40,0X50,0X60,0X70,0X81,0X91,0XA1,0XB1,0XC1,0XD1,0XE1,0XF1
  60.                 DB 0X12,0X02,0X32,0X22,0X52,0X42,0X72,0X62,0X93,0X83,0XB3,0XA3,0XD3,0XC3,0XF3,0XE3
  61.                 DB 0X24,0X34,0X04,0X14,0X64,0X74,0X44,0X54,0XA5,0XB5,0X85,0X95,0XE5,0XF5,0XC5,0XD5
  62.                 DB 0X36,0X26,0X16,0X06,0X76,0X66,0X56,0X46,0XB7,0XA7,0X97,0X87,0XF7,0XE7,0XD7,0XC7
  63.                 DB 0X48,0X58,0X68,0X78,0X08,0X18,0X28,0X38,0XC9,0XD9,0XE9,0XF9,0X89,0X99,0XA9,0XB9
  64.                 DB 0X5A,0X4A,0X7A,0X6A,0X1A,0X0A,0X3A,0X2A,0XDB,0XCB,0XFB,0XEB,0X9B,0X8B,0XBB,0XAB
  65.                 DB 0X6C,0X7C,0X4C,0X5C,0X2C,0X3C,0X0C,0X1C,0XED,0XFD,0XCD,0XDD,0XAD,0XBD,0X8D,0X9D
  66.                 DB 0X7E,0X6E,0X5E,0X4E,0X3E,0X2E,0X1E,0X0E,0XFF,0XEF,0XDF,0XCF,0XBF,0XAF,0X9F,0X8F
  67.                 DB 0X91,0X81,0XB1,0XA1,0XD1,0XC1,0XF1,0XE1,0X10,0X00,0X30,0X20,0X50,0X40,0X70,0X60
  68.                 DB 0X83,0X93,0XA3,0XB3,0XC3,0XD3,0XE3,0XF3,0X02,0X12,0X22,0X32,0X42,0X52,0X62,0X72
  69.                 DB 0XB5,0XA5,0X95,0X85,0XF5,0XE5,0XD5,0XC5,0X34,0X24,0X14,0X04,0X74,0X64,0X54,0X44
  70.                 DB 0XA7,0XB7,0X87,0X97,0XE7,0XF7,0XC7,0XD7,0X26,0X36,0X06,0X16,0X66,0X76,0X46,0X56
  71.                 DB 0XD9,0XC9,0XF9,0XE9,0X99,0X89,0XB9,0XA9,0X58,0X48,0X78,0X68,0X18,0X08,0X38,0X28
  72.                 DB 0XCB,0XDB,0XEB,0XFB,0X8B,0X9B,0XAB,0XBB,0X4A,0X5A,0X6A,0X7A,0X0A,0X1A,0X2A,0X3A
  73.                 DB 0XFD,0XED,0XDD,0XCD,0XBD,0XAD,0X9D,0X8D,0X7C,0X6C,0X5C,0X4C,0X3C,0X2C,0X1C,0X0C
  74.                 DB 0XEF,0XFF,0XCF,0XDF,0XAF,0XBF,0X8F,0X9F,0X6E,0X7E,0X4E,0X5E,0X2E,0X3E,0X0E,0X1E
  75.                 DB 0X00,0X21,0X42,0X63,0X84,0XA5,0XC6,0XE7,0X08,0X29,0X4A,0X6B,0X8C,0XAD,0XCE,0XEF
  76.                 DB 0X31,0X10,0X73,0X52,0XB5,0X94,0XF7,0XD6,0X39,0X18,0X7B,0X5A,0XBD,0X9C,0XFF,0XDE
  77.                 DB 0X62,0X43,0X20,0X01,0XE6,0XC7,0XA4,0X85,0X6A,0X4B,0X28,0X09,0XEE,0XCF,0XAC,0X8D
  78.                 DB 0X53,0X72,0X11,0X30,0XD7,0XF6,0X95,0XB4,0X5B,0X7A,0X19,0X38,0XDF,0XFE,0X9D,0XBC
  79.                 DB 0XC4,0XE5,0X86,0XA7,0X40,0X61,0X02,0X23,0XCC,0XED,0X8E,0XAF,0X48,0X69,0X0A,0X2B
  80.                 DB 0XF5,0XD4,0XB7,0X96,0X71,0X50,0X33,0X12,0XFD,0XDC,0XBF,0X9E,0X79,0X58,0X3B,0X1A
  81.                 DB 0XA6,0X87,0XE4,0XC5,0X22,0X03,0X60,0X41,0XAE,0X8F,0XEC,0XCD,0X2A,0X0B,0X68,0X49
  82.                 DB 0X97,0XB6,0XD5,0XF4,0X13,0X32,0X51,0X70,0X9F,0XBE,0XDD,0XFC,0X1B,0X3A,0X59,0X78
  83.                 DB 0X88,0XA9,0XCA,0XEB,0X0C,0X2D,0X4E,0X6F,0X80,0XA1,0XC2,0XE3,0X04,0X25,0X46,0X67
  84.                 DB 0XB9,0X98,0XFB,0XDA,0X3D,0X1C,0X7F,0X5E,0XB1,0X90,0XF3,0XD2,0X35,0X14,0X77,0X56
  85.                 DB 0XEA,0XCB,0XA8,0X89,0X6E,0X4F,0X2C,0X0D,0XE2,0XC3,0XA0,0X81,0X66,0X47,0X24,0X05
  86.                 DB 0XDB,0XFA,0X99,0XB8,0X5F,0X7E,0X1D,0X3C,0XD3,0XF2,0X91,0XB0,0X57,0X76,0X15,0X34
  87.                 DB 0X4C,0X6D,0X0E,0X2F,0XC8,0XE9,0X8A,0XAB,0X44,0X65,0X06,0X27,0XC0,0XE1,0X82,0XA3
  88.                 DB 0X7D,0X5C,0X3F,0X1E,0XF9,0XD8,0XBB,0X9A,0X75,0X54,0X37,0X16,0XF1,0XD0,0XB3,0X92
  89.                 DB 0X2E,0X0F,0X6C,0X4D,0XAA,0X8B,0XE8,0XC9,0X26,0X07,0X64,0X45,0XA2,0X83,0XE0,0XC1
  90.                 DB 0X1F,0X3E,0X5D,0X7C,0X9B,0XBA,0XD9,0XF8,0X17,0X36,0X55,0X74,0X93,0XB2,0XD1,0XF0
  91.  
  92. ; БЫСТРАЯ (ТАБЛИЧНАЯ) ФУНКЦИЯ ПОДСЧЁТА CRC-16,
  93. ; IX=*DATA, HL=SIZE
  94. ; НА ВЫХОДЕ -> HL=ПОДСЧИТАННОЕ ЗНАЧЕНИЕ
  95. CRC16_FAST      LD B,H
  96.                 LD C,L
  97.                 LD HL,0XFFFF
  98.                 EXX
  99.                 PUSH HL
  100.                 LD DE,BUF_CRC16_TABL
  101.                 LD C,0
  102.                 EXX
  103. CRC16F0         LD A,(IX)
  104.                 XOR H
  105.                 INC IX
  106.                 EXX
  107.                 LD L,A
  108.                 LD H,C
  109.                 ADD HL,DE
  110.                 LD A,(HL)
  111.                 INC H
  112.                 EXX
  113.                 XOR L
  114.                 LD H,A
  115.                 EXX
  116.                 LD A,(HL)
  117.                 EXX
  118.                 LD L,A
  119.                 DEC BC
  120.                 LD A,B
  121.                 OR C
  122.                 JP NZ,CRC16F0
  123.                 EXX
  124.                 POP HL
  125.                 EXX
  126.                 RET
  127.  
  128. ;УСТАНОВКА ОБРАБОТЧИКОВ RST 8 И NMI, ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ
  129. INSTALL_NMIRST  ATMPORT WIN_A3,0X40             ;СНЯЛИ ЗАВИСИМОСТЬ ОТ ПОРТА 7FFD
  130.                 EVOPORT WIN_P6,0                ;ВКЛЮЧИЛИ СТРАНИЦУ ПЕРЕМЕННЫХ
  131.                 LD A,0XEF
  132.                 IN A,(0XFE)
  133.                 RRCA
  134.                 JR NC,INSTALLNMIRST2
  135.                 LD IX,CPU6+ADR_SEL_ROM+4
  136.                 LD HL,ADR_MAGIC-ADR_SEL_ROM-4
  137.                 CALL CRC16_FAST                 ;СЧИТАЕМ CRC НА МЕСТЕ ОБРАБОТЧИКА
  138.                 PUSH HL                         ;СОХРАНИЛИ CRC
  139.                 LD IX,CODE_NMIRST+0X18
  140.                 LD HL,ADR_MAGIC-ADR_SEL_ROM-4
  141.                 CALL CRC16_FAST
  142.                 POP BC                          ;ВЕРНУЛИ РАНЕЕ ПОСЧИТАННОЕ CRC
  143.                 XOR A
  144.                 SBC HL,BC                       ;СРАВНИЛИ
  145.                 JR Z,INSTALLNMIRST1             ;ЕСЛИ СОВПАЛО БОЛЬШЕ НИЧЕГО НЕ ДЕЛАЕМ
  146.                 EVOPORT WIN_P3,RAM_PROFROM
  147.                 LD HL,CPU0
  148.                 CALL FILL_MEM                   ;ОЧИСТКА СТРАНИЦЫ ОЗУ PROFROM
  149. ;НЕ СОВПАЛО, ПЕРВЫЙ ЗАПУСК ПОСЛЕ ВКЛЮЧЕНИЯ ПИТАНИЯ ИЛИ ОБРАБОТЧИКИ БЫЛИ ИСПОРЧЕНЫ
  150. INSTALLNMIRST2  LD HL,CPU3
  151.                 CALL FILL_MEM                   ;ОЧИСТКА ПОСЛЕДНЕЙ СТРАНИЦЫ RAM
  152.                 LD HL,CODE_NMIRST
  153.                 LD DE,CPU6
  154.                 LD BC,ENMI_SERVICE-ADR_SEL_ROM-CPU6
  155.                 LDIR                            ;УСТАНОВИЛИ ОБРАБОТЧИКИ
  156.                 LD (BUF_TABLVOL+0XFE),BC        ;СБРОС CRC ТАБЛИЦЫ НАЙДЕННЫХ РАЗДЕЛОВ
  157.                 EVOPORT WIN_P3,RAM_MOUNTER      ;ВКЛЮЧИЛИ СТРАНИЦУ МОНТИРОВЩИКА ОБРАЗОВ
  158.                 LD HL,CPU0
  159.                 CALL FILL_MEM                   ;ОЧИСТКА СТРАНИЦЫ МОНТИРОВЩИКА ОБРАЗОВ
  160.                 XOR A
  161.                 LD (CPU6+DEBUG_ONOFF),A         ;0-DEBUGGER OFF
  162.                 LD (FLAGS_DRV),A                ;СБРОС ФЛАГОВ ДРАЙВЕРОВ
  163.                 IF BUILD_DEBUG=1
  164.                 PCALL UNPACK_STS,ROM_RST80
  165.                 ENDIF
  166.                 LD A,CMOS_BYTE_00
  167.                 LD BC,CMOSD_SET_ADR
  168.                 OUT (C),A
  169.                 LD BC,CMOSD_RD_WR
  170.                 IN A,(C)
  171.                 CALL LD_SET_FONT
  172. INSTALLNMIRST1  PCALL INIT_CMOS,ROM_RST82       ;ПРОВЕРКА И ИНИЦИАЛИЗАЦИЯ CMOS ПРИ ОШИБКЕ CRC
  173.                 CALL SET4RESETFONT
  174.                 LD BC,0XFF<<8+P_1F7
  175.                 IN A,(C)
  176.                 CP 0X50
  177.                 LD A,1
  178.                 JR Z,INSTALLNMIRST3
  179.                 LD H,HDD_TIMEOUT
  180.                 PCALL READCMOS,ROM_RST82
  181.                 AND A
  182.                 LD A,1
  183.                 JR Z,INSTALLNMIRST3
  184.                 XOR A
  185. INSTALLNMIRST4  ADD A,25
  186.                 DEC L
  187.                 JR NZ,INSTALLNMIRST4
  188. INSTALLNMIRST3  LD (HDDTIMEOUT),A
  189.                 LD HL,STEK_PAGES
  190.                 LD (TEKPAGE),HL
  191.                 LD HL,READ_KEYS
  192.                 LD (ADR_INT),HL
  193.                 LD BC,WIN_A0
  194.                 XOR A
  195.                 LD (CPU6+FOR_RET),A
  196.                 JP ADR_SEL_ROM
  197.  
  198. FILL_MEM        EX DE,HL
  199.                 LD HL,0
  200.                 ADD HL,SP
  201.                 EX DE,HL
  202.                 LD SP,HL
  203.                 LD HL,0
  204.                 LD B,L
  205. FILL_MEM1       REPT 0X20
  206.                 PUSH HL
  207.                 ENDM
  208.                 DJNZ FILL_MEM1
  209.                 EX DE,HL
  210.                 LD SP,HL
  211.                 RET
  212.  
  213. SETUP_FONT      LD A,(RREG_A)
  214.                 AND A
  215.                 LD HL,ATM_FONT
  216.                 JR Z,SET_FONT1
  217.                 LD HL,CP866_FONT
  218.                 JR SET_FONT1
  219.  
  220. SET4RESETFONT   LD A,CMOS_BYTE_00
  221.                 LD BC,CMOSD_SET_ADR
  222.                 OUT (C),A
  223.                 LD BC,CMOSD_RD_WR
  224.                 IN A,(C)
  225.                 LD L,A
  226.                 AND RELOAD_FONT
  227.                 RET NZ                          ;ЕСЛИ 1, ТО ШРИФТ НЕ ПЕРЕЗАГРУЖАЕМ
  228.                 LD A,L
  229. LD_SET_FONT     AND TYPE_FONT                   ;ОПРЕДЕЛЕНИЕ ВЫБРАННОГО ШРИФТА
  230.                 LD HL,ATM_FONT                  ;0=ШРИФТ ATM
  231.                 JR Z,SET_FONT1
  232.                 LD HL,CP866_FONT                ;1=ШРИФТ CP866
  233. SET_FONT1       LD DE,CPU3+OFFSET_BUFSYM
  234.                 EVOPORT WIN_P3,RAM_SCR_FONT
  235.                 PUSH DE
  236.                 CALL UNPACK
  237.                 POP HL
  238.                 LD BC,0X0800
  239.                 LD D,C
  240.                 LD E,C
  241.                 PEC_ON SHADOW_BF+FONT_BF
  242.                 LDIR
  243.                 PEC_OFF FONT_BF
  244.                 RET
  245.  
  246.                 include nmi_service.a80
  247.  
  248. PERFECTCOM      binclude perfpack_pack.bin
  249.  
  250.                 PHASE $&0X3FFF
  251.                 DUPL 0X3FF8-$,0XFF
  252.                 DB "ADDON1"
  253.                 DW DATA_VERS
  254.                 DEPHASE
  255.