;LAST UPDATE: 27.05.2012 savelij
DRV_VAR EQU 0X4000
PHASE 0
DUPL ADR_SEL_ROM-$,0XFF
OUT (C),A
NOP
RET
DUPL 0X0038-$,0XFF
EI
RET
DUPL 0X0080-$,0XFF
UNPACK include ../../dec40.a80
DUPL 0X0100-$,0XFF
JP UNP_MICRO_BOOT ;РАСПАКОВКА ЗАПУСКАЛКИ HOBETA И SPG ФАЙЛОВ
JP CRC16 ;ТАБЛИЧНЫЙ РАСЧЕТ CRC16
JP INSTALL_NMIRST ;УСТАНОВКА ОБРАБОТЧИКОВ NMI И RST
JP UNP_MAGICFONT ;РАСПАКОВКА ШРИФТА ДЛЯ NMI МЕНЮ
UNP_MICRO_BOOT LD HL,MICRO_BOOT
LD DE,DRV_VAR+0X300
CALL UNPACK ;РАСПАКОВАЛИ FAT BOOT
LD HL,BUF_TEKVOL
LD DE,(RREG_L)
LD BC,0X100
LDIR ;СКОПИРОВАЛИ ПЕРЕМЕННЫЕ FAT ДРАЙВЕРА ВЫБРАННОГО РАЗДЕЛА
RET2PAGE5 LD BC,WIN_A0
LD A,5
JP JUMP2PAGE
UNP_MAGICFONT CALL UNPACK
JR RET2PAGE5
; БЫСТРАЯ (ТАБЛИЧНАЯ) ФУНКЦИЯ ПОДСЧЁТА CRC-16,
; IX=*DATA, HL=SIZE
; НА ВЫХОДЕ -> HL=ПОДСЧИТАННОЕ ЗНАЧЕНИЕ
CRC16_FAST LD B,H
LD C,L
LD HL,0XFFFF
EXX
PUSH HL
LD DE,BUF_CRC16_TABL
LD C,0
EXX
CRC16F0 LD A,(IX)
XOR H
INC IX
EXX
LD L,A
LD H,C
ADD HL,DE
LD A,(HL)
INC H
EXX
XOR L
LD H,A
EXX
LD A,(HL)
EXX
LD L,A
DEC BC
LD A,B
OR C
JP NZ,CRC16F0
EXX
POP HL
EXX
RET
CRC16FAST CALL CRC16_FAST
LD BC,WIN_A0
LD A,5
JP JUMP2PAGE
DUPL (HIGH ($)+1)*0X100-$,0XFF
BUF_CRC16_TABL DB 0X00,0X10,0X20,0X30,0X40,0X50,0X60,0X70,0X81,0X91,0XA1,0XB1,0XC1,0XD1,0XE1,0XF1
DB 0X12,0X02,0X32,0X22,0X52,0X42,0X72,0X62,0X93,0X83,0XB3,0XA3,0XD3,0XC3,0XF3,0XE3
DB 0X24,0X34,0X04,0X14,0X64,0X74,0X44,0X54,0XA5,0XB5,0X85,0X95,0XE5,0XF5,0XC5,0XD5
DB 0X36,0X26,0X16,0X06,0X76,0X66,0X56,0X46,0XB7,0XA7,0X97,0X87,0XF7,0XE7,0XD7,0XC7
DB 0X48,0X58,0X68,0X78,0X08,0X18,0X28,0X38,0XC9,0XD9,0XE9,0XF9,0X89,0X99,0XA9,0XB9
DB 0X5A,0X4A,0X7A,0X6A,0X1A,0X0A,0X3A,0X2A,0XDB,0XCB,0XFB,0XEB,0X9B,0X8B,0XBB,0XAB
DB 0X6C,0X7C,0X4C,0X5C,0X2C,0X3C,0X0C,0X1C,0XED,0XFD,0XCD,0XDD,0XAD,0XBD,0X8D,0X9D
DB 0X7E,0X6E,0X5E,0X4E,0X3E,0X2E,0X1E,0X0E,0XFF,0XEF,0XDF,0XCF,0XBF,0XAF,0X9F,0X8F
DB 0X91,0X81,0XB1,0XA1,0XD1,0XC1,0XF1,0XE1,0X10,0X00,0X30,0X20,0X50,0X40,0X70,0X60
DB 0X83,0X93,0XA3,0XB3,0XC3,0XD3,0XE3,0XF3,0X02,0X12,0X22,0X32,0X42,0X52,0X62,0X72
DB 0XB5,0XA5,0X95,0X85,0XF5,0XE5,0XD5,0XC5,0X34,0X24,0X14,0X04,0X74,0X64,0X54,0X44
DB 0XA7,0XB7,0X87,0X97,0XE7,0XF7,0XC7,0XD7,0X26,0X36,0X06,0X16,0X66,0X76,0X46,0X56
DB 0XD9,0XC9,0XF9,0XE9,0X99,0X89,0XB9,0XA9,0X58,0X48,0X78,0X68,0X18,0X08,0X38,0X28
DB 0XCB,0XDB,0XEB,0XFB,0X8B,0X9B,0XAB,0XBB,0X4A,0X5A,0X6A,0X7A,0X0A,0X1A,0X2A,0X3A
DB 0XFD,0XED,0XDD,0XCD,0XBD,0XAD,0X9D,0X8D,0X7C,0X6C,0X5C,0X4C,0X3C,0X2C,0X1C,0X0C
DB 0XEF,0XFF,0XCF,0XDF,0XAF,0XBF,0X8F,0X9F,0X6E,0X7E,0X4E,0X5E,0X2E,0X3E,0X0E,0X1E
DB 0X00,0X21,0X42,0X63,0X84,0XA5,0XC6,0XE7,0X08,0X29,0X4A,0X6B,0X8C,0XAD,0XCE,0XEF
DB 0X31,0X10,0X73,0X52,0XB5,0X94,0XF7,0XD6,0X39,0X18,0X7B,0X5A,0XBD,0X9C,0XFF,0XDE
DB 0X62,0X43,0X20,0X01,0XE6,0XC7,0XA4,0X85,0X6A,0X4B,0X28,0X09,0XEE,0XCF,0XAC,0X8D
DB 0X53,0X72,0X11,0X30,0XD7,0XF6,0X95,0XB4,0X5B,0X7A,0X19,0X38,0XDF,0XFE,0X9D,0XBC
DB 0XC4,0XE5,0X86,0XA7,0X40,0X61,0X02,0X23,0XCC,0XED,0X8E,0XAF,0X48,0X69,0X0A,0X2B
DB 0XF5,0XD4,0XB7,0X96,0X71,0X50,0X33,0X12,0XFD,0XDC,0XBF,0X9E,0X79,0X58,0X3B,0X1A
DB 0XA6,0X87,0XE4,0XC5,0X22,0X03,0X60,0X41,0XAE,0X8F,0XEC,0XCD,0X2A,0X0B,0X68,0X49
DB 0X97,0XB6,0XD5,0XF4,0X13,0X32,0X51,0X70,0X9F,0XBE,0XDD,0XFC,0X1B,0X3A,0X59,0X78
DB 0X88,0XA9,0XCA,0XEB,0X0C,0X2D,0X4E,0X6F,0X80,0XA1,0XC2,0XE3,0X04,0X25,0X46,0X67
DB 0XB9,0X98,0XFB,0XDA,0X3D,0X1C,0X7F,0X5E,0XB1,0X90,0XF3,0XD2,0X35,0X14,0X77,0X56
DB 0XEA,0XCB,0XA8,0X89,0X6E,0X4F,0X2C,0X0D,0XE2,0XC3,0XA0,0X81,0X66,0X47,0X24,0X05
DB 0XDB,0XFA,0X99,0XB8,0X5F,0X7E,0X1D,0X3C,0XD3,0XF2,0X91,0XB0,0X57,0X76,0X15,0X34
DB 0X4C,0X6D,0X0E,0X2F,0XC8,0XE9,0X8A,0XAB,0X44,0X65,0X06,0X27,0XC0,0XE1,0X82,0XA3
DB 0X7D,0X5C,0X3F,0X1E,0XF9,0XD8,0XBB,0X9A,0X75,0X54,0X37,0X16,0XF1,0XD0,0XB3,0X92
DB 0X2E,0X0F,0X6C,0X4D,0XAA,0X8B,0XE8,0XC9,0X26,0X07,0X64,0X45,0XA2,0X83,0XE0,0XC1
DB 0X1F,0X3E,0X5D,0X7C,0X9B,0XBA,0XD9,0XF8,0X17,0X36,0X55,0X74,0X93,0XB2,0XD1,0XF0
MICRO_BOOT binclude ../../fat/source/micro_boot_fat_pack.rom
INSTALL_NMIRST LD BC,WIN_P2
XOR A
OUT (C),A
LD IX,CPU2+ADR_SEL_ROM+4
LD HL,0X20
CALL CRC16_FAST
PUSH HL
LD HL,CODE_NMIRST
LD DE,CPU2+ADR_SEL_ROM
LD BC,ENMI_SERVICE-ADR_SEL_ROM
LDIR
LD (BUF_TABLVOL+0XFE),BC
LD IX,CPU2+ADR_SEL_ROM+4
LD HL,0X20
CALL CRC16_FAST
POP BC
AND A
SBC HL,BC
JR Z,INSTALLNMIRST1
LD BC,RD_0WINA1
IN A,(C)
AND 0X3F
OR 0X40
EX AF,AF'
LD BC,WIN_P1
LD A,PAGE_MOUNTER
OUT (C),A
LD HL,MOUNT_DRIVES
LD D,H
LD E,L
INC DE
LD BC,0X1FFF
LD (HL),0
LDIR
LD HL,CPU1
LD D,H
LD E,L
INC DE
LD BC,0X3FFF
LD (HL),0
LDIR
LD BC,WIN_A1
EX AF,AF'
OUT (C),A
INSTALLNMIRST1 CALL SET4RESETFONT
LD BC,WIN_A0
XOR A
JP ADR_SEL_ROM
SET4RESETFONT LD A,CMOS_BYTE_00
LD BC,CMOSD_SET_ADR
OUT (C),A
LD BC,CMOSD_RD_WR
IN A,(C)
LD L,A
AND RELOAD_FONT
RET NZ ;ЕСЛИ 1, ТО ШРИФТ НЕ ПЕРЕЗАГРУЖАЕМ
LD A,L
LD_SET_FONT AND TYPE_FONT ;ОПРЕДЕЛЕНИЕ ВЫЬРАННОГО ШРИФТА
LD HL,ATM_FONT ;0=ШРИФТ ATM
JR NZ,SET_FONT1
LD HL,CP866_FONT ;1=ШРИФТ CP866
SET_FONT1 LD BC,WIN_P2
XOR A
OUT (C),A
LD DE,CPU2+OFFSET_BUFSYM
PUSH DE
CALL UNPACK
POP HL
LD DE,0
LD BC,0X0800
LD A,5
OUT (PEVO_CONF),A
LDIR
LD A,1
OUT (PEVO_CONF),A
LD BC,WIN_A2
LD A,0X7D
OUT (C),A
RET
include nmi_service.a80
CP866_UTL binclude 8x8_ar_pack.bin
CP866_FONT binclude 866_code_pack.bin
ATM_FONT binclude atm_code_pack.bin
DUPL 0X3FF8-$,0XFF
DB "ADDONS"
DW DATA