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: 27.05.2012 savelij
  3.  
  4. DRV_VAR         EQU 0X4000
  5.  
  6.                 PHASE 0
  7.                 DUPL ADR_SEL_ROM-$,0XFF
  8.                 OUT (C),A
  9.                 NOP
  10.                 RET
  11.  
  12.                 DUPL 0X0038-$,0XFF
  13.                 EI
  14.                 RET
  15.  
  16.                 DUPL 0X0080-$,0XFF
  17. UNPACK          include ../../dec40.a80
  18.  
  19.                 DUPL 0X0100-$,0XFF
  20.                 JP UNP_MICRO_BOOT               ;РАСПАКОВКА ЗАПУСКАЛКИ HOBETA И SPG ФАЙЛОВ
  21.                 JP CRC16                        ;ТАБЛИЧНЫЙ РАСЧЕТ CRC16
  22.                 JP INSTALL_NMIRST               ;УСТАНОВКА ОБРАБОТЧИКОВ NMI И RST
  23.                 JP UNP_MAGICFONT                ;РАСПАКОВКА ШРИФТА ДЛЯ NMI МЕНЮ
  24.  
  25. UNP_MICRO_BOOT  LD HL,MICRO_BOOT
  26.                 LD DE,DRV_VAR+0X300
  27.                 CALL UNPACK                     ;РАСПАКОВАЛИ FAT BOOT
  28.                 LD HL,BUF_TEKVOL
  29.                 LD DE,(RREG_L)
  30.                 LD BC,0X100
  31.                 LDIR                            ;СКОПИРОВАЛИ ПЕРЕМЕННЫЕ FAT ДРАЙВЕРА ВЫБРАННОГО РАЗДЕЛА
  32. RET2PAGE5       LD BC,WIN_A0
  33.                 LD A,5
  34.                 JP JUMP2PAGE
  35.  
  36. UNP_MAGICFONT   CALL UNPACK
  37.                 JR RET2PAGE5
  38.  
  39. ; БЫСТРАЯ (ТАБЛИЧНАЯ) ФУНКЦИЯ ПОДСЧЁТА CRC-16,
  40. ; IX=*DATA, HL=SIZE
  41. ; НА ВЫХОДЕ -> HL=ПОДСЧИТАННОЕ ЗНАЧЕНИЕ
  42. CRC16_FAST      LD B,H
  43.                 LD C,L
  44.                 LD HL,0XFFFF
  45.                 EXX
  46.                 PUSH HL
  47.                 LD DE,BUF_CRC16_TABL
  48.                 LD C,0
  49.                 EXX
  50. CRC16F0         LD A,(IX)
  51.                 XOR H
  52.                 INC IX
  53.                 EXX
  54.                 LD L,A
  55.                 LD H,C
  56.                 ADD HL,DE
  57.                 LD A,(HL)
  58.                 INC H
  59.                 EXX
  60.                 XOR L
  61.                 LD H,A
  62.                 EXX
  63.                 LD A,(HL)
  64.                 EXX
  65.                 LD L,A
  66.                 DEC BC
  67.                 LD A,B
  68.                 OR C
  69.                 JP NZ,CRC16F0
  70.                 EXX
  71.                 POP HL
  72.                 EXX
  73.                 RET
  74.  
  75. CRC16FAST       CALL CRC16_FAST
  76.                 LD BC,WIN_A0
  77.                 LD A,5
  78.                 JP JUMP2PAGE
  79.  
  80.                 DUPL (HIGH ($)+1)*0X100-$,0XFF
  81. BUF_CRC16_TABL  DB 0X00,0X10,0X20,0X30,0X40,0X50,0X60,0X70,0X81,0X91,0XA1,0XB1,0XC1,0XD1,0XE1,0XF1
  82.                 DB 0X12,0X02,0X32,0X22,0X52,0X42,0X72,0X62,0X93,0X83,0XB3,0XA3,0XD3,0XC3,0XF3,0XE3
  83.                 DB 0X24,0X34,0X04,0X14,0X64,0X74,0X44,0X54,0XA5,0XB5,0X85,0X95,0XE5,0XF5,0XC5,0XD5
  84.                 DB 0X36,0X26,0X16,0X06,0X76,0X66,0X56,0X46,0XB7,0XA7,0X97,0X87,0XF7,0XE7,0XD7,0XC7
  85.                 DB 0X48,0X58,0X68,0X78,0X08,0X18,0X28,0X38,0XC9,0XD9,0XE9,0XF9,0X89,0X99,0XA9,0XB9
  86.                 DB 0X5A,0X4A,0X7A,0X6A,0X1A,0X0A,0X3A,0X2A,0XDB,0XCB,0XFB,0XEB,0X9B,0X8B,0XBB,0XAB
  87.                 DB 0X6C,0X7C,0X4C,0X5C,0X2C,0X3C,0X0C,0X1C,0XED,0XFD,0XCD,0XDD,0XAD,0XBD,0X8D,0X9D
  88.                 DB 0X7E,0X6E,0X5E,0X4E,0X3E,0X2E,0X1E,0X0E,0XFF,0XEF,0XDF,0XCF,0XBF,0XAF,0X9F,0X8F
  89.                 DB 0X91,0X81,0XB1,0XA1,0XD1,0XC1,0XF1,0XE1,0X10,0X00,0X30,0X20,0X50,0X40,0X70,0X60
  90.                 DB 0X83,0X93,0XA3,0XB3,0XC3,0XD3,0XE3,0XF3,0X02,0X12,0X22,0X32,0X42,0X52,0X62,0X72
  91.                 DB 0XB5,0XA5,0X95,0X85,0XF5,0XE5,0XD5,0XC5,0X34,0X24,0X14,0X04,0X74,0X64,0X54,0X44
  92.                 DB 0XA7,0XB7,0X87,0X97,0XE7,0XF7,0XC7,0XD7,0X26,0X36,0X06,0X16,0X66,0X76,0X46,0X56
  93.                 DB 0XD9,0XC9,0XF9,0XE9,0X99,0X89,0XB9,0XA9,0X58,0X48,0X78,0X68,0X18,0X08,0X38,0X28
  94.                 DB 0XCB,0XDB,0XEB,0XFB,0X8B,0X9B,0XAB,0XBB,0X4A,0X5A,0X6A,0X7A,0X0A,0X1A,0X2A,0X3A
  95.                 DB 0XFD,0XED,0XDD,0XCD,0XBD,0XAD,0X9D,0X8D,0X7C,0X6C,0X5C,0X4C,0X3C,0X2C,0X1C,0X0C
  96.                 DB 0XEF,0XFF,0XCF,0XDF,0XAF,0XBF,0X8F,0X9F,0X6E,0X7E,0X4E,0X5E,0X2E,0X3E,0X0E,0X1E
  97.                 DB 0X00,0X21,0X42,0X63,0X84,0XA5,0XC6,0XE7,0X08,0X29,0X4A,0X6B,0X8C,0XAD,0XCE,0XEF
  98.                 DB 0X31,0X10,0X73,0X52,0XB5,0X94,0XF7,0XD6,0X39,0X18,0X7B,0X5A,0XBD,0X9C,0XFF,0XDE
  99.                 DB 0X62,0X43,0X20,0X01,0XE6,0XC7,0XA4,0X85,0X6A,0X4B,0X28,0X09,0XEE,0XCF,0XAC,0X8D
  100.                 DB 0X53,0X72,0X11,0X30,0XD7,0XF6,0X95,0XB4,0X5B,0X7A,0X19,0X38,0XDF,0XFE,0X9D,0XBC
  101.                 DB 0XC4,0XE5,0X86,0XA7,0X40,0X61,0X02,0X23,0XCC,0XED,0X8E,0XAF,0X48,0X69,0X0A,0X2B
  102.                 DB 0XF5,0XD4,0XB7,0X96,0X71,0X50,0X33,0X12,0XFD,0XDC,0XBF,0X9E,0X79,0X58,0X3B,0X1A
  103.                 DB 0XA6,0X87,0XE4,0XC5,0X22,0X03,0X60,0X41,0XAE,0X8F,0XEC,0XCD,0X2A,0X0B,0X68,0X49
  104.                 DB 0X97,0XB6,0XD5,0XF4,0X13,0X32,0X51,0X70,0X9F,0XBE,0XDD,0XFC,0X1B,0X3A,0X59,0X78
  105.                 DB 0X88,0XA9,0XCA,0XEB,0X0C,0X2D,0X4E,0X6F,0X80,0XA1,0XC2,0XE3,0X04,0X25,0X46,0X67
  106.                 DB 0XB9,0X98,0XFB,0XDA,0X3D,0X1C,0X7F,0X5E,0XB1,0X90,0XF3,0XD2,0X35,0X14,0X77,0X56
  107.                 DB 0XEA,0XCB,0XA8,0X89,0X6E,0X4F,0X2C,0X0D,0XE2,0XC3,0XA0,0X81,0X66,0X47,0X24,0X05
  108.                 DB 0XDB,0XFA,0X99,0XB8,0X5F,0X7E,0X1D,0X3C,0XD3,0XF2,0X91,0XB0,0X57,0X76,0X15,0X34
  109.                 DB 0X4C,0X6D,0X0E,0X2F,0XC8,0XE9,0X8A,0XAB,0X44,0X65,0X06,0X27,0XC0,0XE1,0X82,0XA3
  110.                 DB 0X7D,0X5C,0X3F,0X1E,0XF9,0XD8,0XBB,0X9A,0X75,0X54,0X37,0X16,0XF1,0XD0,0XB3,0X92
  111.                 DB 0X2E,0X0F,0X6C,0X4D,0XAA,0X8B,0XE8,0XC9,0X26,0X07,0X64,0X45,0XA2,0X83,0XE0,0XC1
  112.                 DB 0X1F,0X3E,0X5D,0X7C,0X9B,0XBA,0XD9,0XF8,0X17,0X36,0X55,0X74,0X93,0XB2,0XD1,0XF0
  113.  
  114. MICRO_BOOT      binclude ../../fat/source/micro_boot_fat_pack.rom
  115.  
  116. INSTALL_NMIRST  LD BC,WIN_P2
  117.                 XOR A
  118.                 OUT (C),A
  119.                 LD IX,CPU2+ADR_SEL_ROM+4
  120.                 LD HL,0X20
  121.                 CALL CRC16_FAST
  122.                 PUSH HL
  123.                 LD HL,CODE_NMIRST
  124.                 LD DE,CPU2+ADR_SEL_ROM
  125.                 LD BC,ENMI_SERVICE-ADR_SEL_ROM
  126.                 LDIR
  127.                 LD (BUF_TABLVOL+0XFE),BC
  128.                 LD IX,CPU2+ADR_SEL_ROM+4
  129.                 LD HL,0X20
  130.                 CALL CRC16_FAST
  131.                 POP BC
  132.                 AND A
  133.                 SBC HL,BC
  134.                 JR Z,INSTALLNMIRST1
  135.                 LD BC,RD_0WINA1
  136.                 IN A,(C)
  137.                 AND 0X3F
  138.                 OR 0X40
  139.                 EX AF,AF'
  140.                 LD BC,WIN_P1
  141.                 LD A,PAGE_MOUNTER
  142.                 OUT (C),A
  143.                 LD HL,MOUNT_DRIVES
  144.                 LD D,H
  145.                 LD E,L
  146.                 INC DE
  147.                 LD BC,0X1FFF
  148.                 LD (HL),0
  149.                 LDIR
  150.                 LD HL,CPU1
  151.                 LD D,H
  152.                 LD E,L
  153.                 INC DE
  154.                 LD BC,0X3FFF
  155.                 LD (HL),0
  156.                 LDIR
  157.                 LD BC,WIN_A1
  158.                 EX AF,AF'
  159.                 OUT (C),A
  160. INSTALLNMIRST1  CALL SET4RESETFONT
  161.                 LD BC,WIN_A0
  162.                 XOR A
  163.                 JP ADR_SEL_ROM
  164.  
  165. SET4RESETFONT   LD A,CMOS_BYTE_00
  166.                 LD BC,CMOSD_SET_ADR
  167.                 OUT (C),A
  168.                 LD BC,CMOSD_RD_WR
  169.                 IN A,(C)
  170.                 LD L,A
  171.                 AND RELOAD_FONT
  172.                 RET NZ                          ;ЕСЛИ 1, ТО ШРИФТ НЕ ПЕРЕЗАГРУЖАЕМ
  173.                 LD A,L
  174. LD_SET_FONT     AND TYPE_FONT                   ;ОПРЕДЕЛЕНИЕ ВЫЬРАННОГО ШРИФТА
  175.                 LD HL,ATM_FONT                  ;0=ШРИФТ ATM
  176.                 JR NZ,SET_FONT1
  177.                 LD HL,CP866_FONT                ;1=ШРИФТ CP866
  178. SET_FONT1       LD BC,WIN_P2
  179.                 XOR A
  180.                 OUT (C),A
  181.                 LD DE,CPU2+OFFSET_BUFSYM
  182.                 PUSH DE
  183.                 CALL UNPACK
  184.                 POP HL
  185.                 LD DE,0
  186.                 LD BC,0X0800
  187.                 LD A,5          
  188.                 OUT (PEVO_CONF),A
  189.                 LDIR
  190.                 LD A,1
  191.                 OUT (PEVO_CONF),A
  192.                 LD BC,WIN_A2
  193.                 LD A,0X7D
  194.                 OUT (C),A
  195.                 RET
  196.  
  197.                 include nmi_service.a80
  198.  
  199. CP866_UTL       binclude 8x8_ar_pack.bin
  200. CP866_FONT      binclude 866_code_pack.bin
  201. ATM_FONT        binclude atm_code_pack.bin
  202.  
  203.                 DUPL 0X3FF8-$,0XFF
  204.                 DB "ADDONS"
  205.                 DW DATA
  206.