diff --git a/Shared_Includes b/Shared_Includes index 9a65a38..90f4b54 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 9a65a386bfb6aaccc7fb476a3e159a684af65743 +Subproject commit 90f4b54edb1effbd0b57b0ee64771d27e84023ff diff --git a/src/bios/exp/FUNC_PIC.ASM b/src/bios/exp/FUNC_PIC.ASM index 9f1ca71..fc9451b 100644 --- a/src/bios/exp/FUNC_PIC.ASM +++ b/src/bios/exp/FUNC_PIC.ASM @@ -183,101 +183,98 @@ PIC_FN3_NO: RET ;************************************************************************** +;PIC_FN4: ; вход: HL - данные палитры RGB, E - начальный цвет ; D - число цветов, B - PAL-mask, A - page PAL -;PIC_FN4: PIC_SET_PAL: - PUSH IX + PUSH IX - EX AF,AF' - IN A,(RGADR) - PUSH AF ; сохранить положение RGADR - LD A,E - OUT (RGADR),A ; начальный цвет в порт - LD A,D ; сохранить число цветов - EX AF,AF' ; вернуть страницу PAL + EX AF,AF' + IN A,(RGADR) + PUSH AF ; сохранить положение RGADR + LD A,E + OUT (RGADR),A ; начальный цвет в порт + LD A,D ; сохранить число цветов + EX AF,AF' ; вернуть страницу PAL - BIT 7,H ; проверить адрес данных - LD C,SLOT3 ; если ниже 8000h - LD D,0C3H ; то граф.экран на странице 3 - JR Z,PIC_FN4_NO_PAGE1 - LD D,043H ; иначе - LD C,SLOT1 ; на странице 1 -PIC_FN4_NO_PAGE1: + BIT 7,H ; проверить адрес данных + LD C,SLOT3 ; если ниже 8000h + LD D,#C3 ; то граф.экран на странице 3 + JR Z,.NO_PAGE1 + LD D,#43 ; иначе + LD C,SLOT1 ; на странице 1 +.NO_PAGE1: + ADD A,A + PUSH AF - ADD A,A - JR C,PIC_PAL_READ + ADD A,A + AND #1C + XOR #E0 ; младший байт адреса PAL + LD E,A ; DE - адрес в видео-ОЗУ + PUSH DE + POP IX ; адрес палитры - ADD A,A - AND 1CH - XOR 0E0H ; младший байт адреса PAL - LD E,A ; DE - адрес в видео-ОЗУ - PUSH DE - POP IX ; адрес палитры + LD D,B ; маска PAL + EX AF,AF' ; вернуть число цветов + LD B,A ; число цветов - LD D,B ; маска PAL - EX AF,AF' ; вернуть число цветов - LD B,A ; число цветов + IN E,(C) ; сохранить страницу 3 + LD A,#50 ; страница графического RAM + OUT (C),A - IN E,(C) ; сохранить страницу 3 - LD A,#50 ; страница графического RAM - OUT (C),A + POP AF + JR C,PIC_GET_PAL + ; цикл установки цветов палитры +.loopPal: + LD A,(HL) ; B + AND D + LD (IX+2),A + INC HL -PIC_FN4_L1: ; цикл установки цветов палитры + LD A,(HL) ; G + AND D + LD (IX+1),A + INC HL - LD A,(HL) ; B - AND D - LD (IX+2),A - INC HL + LD A,(HL) ; R + AND D + LD (IX+0),A + INC HL - LD A,(HL) ; G - AND D - LD (IX+1),A - INC HL + LD A,(HL) ; Y + AND D + LD (IX+3),A + INC HL - LD A,(HL) ; R - AND D - LD (IX+0),A - INC HL - - LD A,(HL) ; Y - AND D - LD (IX+3),A - INC HL - - IN A,(RGADR) - INC A - OUT (RGADR),A - - DJNZ PIC_FN4_L1 ; выполнять, пока не 0 - - OUT (C),E ; восстановить страницу 3 + IN A,(RGADR) + INC A + OUT (RGADR),A + DJNZ .loopPal ; выполнять, пока не 0 +.exit: OUT (C),E ; восстановить страницу 3 POP AF OUT (RGADR),A ; восстановить Y_PORT POP IX AND A RET -PIC_PAL_READ: +PIC_GET_PAL: + ; ADD A,A + ; AND #1C + ; XOR #E0 ; младший байт адреса PAL + ; LD E,A ; DE - адрес в видео-ОЗУ + ; PUSH DE + ; POP IX ; адрес палитры - ADD A,A - AND 1CH - XOR 0E0H ; младший байт адреса PAL - LD E,A ; DE - адрес в видео-ОЗУ - PUSH DE - POP IX ; адрес палитры - - LD D,B ; маска PAL - EX AF,AF' ; вернуть число цветов - LD B,A ; число цветов - - IN E,(C) ; сохранить страницу 3 - LD A,#50 ; страница графического RAM - OUT (C),A - -PIC_FN4_L2: ; цикл установки цветов палитры + ; LD D,B ; маска PAL + ; EX AF,AF' ; вернуть число цветов + ; LD B,A ; число цветов + ; IN E,(C) ; сохранить страницу 3 + ; LD A,#50 ; страница графического RAM + ; OUT (C),A + ; цикл чтения цветов палитры +.loopPal: LD A,(IX+2) LD (HL),A ; B INC HL @@ -297,16 +294,15 @@ PIC_FN4_L2: ; цик IN A,(RGADR) INC A OUT (RGADR),A + DJNZ .loopPal ; выполнять, пока не 0 - DJNZ PIC_FN4_L2 ; выполнять, пока не 0 - - OUT (C),E ; восстановить страницу 3 - - POP AF - OUT (RGADR),A ; восстановить Y_PORT - POP IX - AND A - RET + JR PIC_SET_PAL.exit + ; OUT (C),E ; восстановить страницу 3 + ; POP AF + ; OUT (RGADR),A ; восстановить Y_PORT + ; POP IX + ; AND A + ; RET ;******************************************************************** @@ -339,9 +335,9 @@ PIC_FN6: ; AND 3 ; ADD A,A ; ADD A,A -; ADD A,0E0H +; ADD A,#E0 ; LD L,A -; LD H,43H +; LD H,#43 ; IN A,(SLOT1) ; PUSH AF ; diff --git a/src/bios/rom/SETUP/VIDEO_IO.asm b/src/bios/rom/SETUP/VIDEO_IO.asm index 555244d..23af571 100644 --- a/src/bios/rom/SETUP/VIDEO_IO.asm +++ b/src/bios/rom/SETUP/VIDEO_IO.asm @@ -330,10 +330,10 @@ LOGOX: LD IX,win_descriptor.tab320x256 LD HL,memBUFFER.Shared ; A = 0 - LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS - LD E,A - LD B,def_pal_mask - CALL PIC_SET_PAL + LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS + LD E,A + LD B,def_pal_mask + CALL PIC_SET_PAL SAFE_PORTY @@ -594,101 +594,5 @@ DCR01: LDIR RET - MODULE COLORS -CGA: - ; B G R _ -.PALETTE: DB #00,#00,#00,#00 ; 0 BLACK - DB #A8,#00,#00,#00 ; 1 BLUE - DB #00,#A8,#00,#00 ; 2 GREEN - DB #A8,#A8,#00,#00 ; 3 CYAN - DB #00,#00,#A8,#00 ; 4 RED - DB #A8,#00,#A8,#00 ; 5 MAGENTA - DB #00,#54,#A8,#00 ; 6 BROWN - DB #A8,#A8,#A8,#00 ; 7 WHITE - DB #54,#54,#54,#00 ; 8 GRAY - DB #FC,#54,#54,#00 ; 9 BRIGHT BLUE - DB #54,#FC,#54,#00 ; 10 BRIGHT GREEN - DB #FC,#FC,#54,#00 ; 11 BRIGHT CYAN - DB #54,#54,#FC,#00 ; 12 BRIGHT RED - DB #FC,#54,#FC,#00 ; 13 BRIGHT MAGENTA - DB #54,#FC,#FC,#00 ; 14 YELLOW - DB #FC,#FC,#FC,#00 ; 15 WHITE -; -; -INC: -.BLACK EQU #00 -.BLUE EQU #01 -.GREEN EQU #02 -.CYAN EQU #03 -.RED EQU #04 -.MAGENTA EQU #05 -.BROWN EQU #06 -.LGRAY EQU #07 -.DGRAY EQU #08 -.LBLUE EQU #09 -.LGREEN EQU #0A -.LCYAN EQU #0B -.LRED EQU #0C -.LMAGENT EQU #0D -.YELLOW EQU #0E -.WHITE EQU #0F -PAPER: -.BLACK EQU 16*INC.BLACK -.BLUE EQU 16*INC.BLUE -.GREEN EQU 16*INC.GREEN -.CYAN EQU 16*INC.CYAN -.RED EQU 16*INC.RED -.MAGENTA EQU 16*INC.MAGENTA -.BROWN EQU 16*INC.BROWN -.LGRAY EQU 16*INC.LGRAY -.DGRAY EQU 16*INC.DGRAY -.LBLUE EQU 16*INC.LBLUE -.LGREEN EQU 16*INC.LGREEN -.LCYAN EQU 16*INC.LCYAN -.LRED EQU 16*INC.LRED -.LMAGENT EQU 16*INC.LMAGENT -.YELLOW EQU 16*INC.YELLOW -.WHITE EQU 16*INC.WHITE - -FLASH EQU #80 - -/* -INC_COLOR: -.BLACK EQU #00 -.BLUE EQU #01 -.GREEN EQU #02 -.CYAN EQU #03 -.RED EQU #04 -.MAGENTA EQU #05 -.BROWN EQU #06 -.LGRAY EQU #07 -.DGRAY EQU #08 -.LBLUE EQU #09 -.LGREEN EQU #0A -.LCYAN EQU #0B -.LRED EQU #0C -.LMAGENT EQU #0D -.YELLOW EQU #0E -.WHITE EQU #0F -.FLASH EQU #80 -PAPER_COLOR: -.BLACK EQU 16*COLORS.INC.BLACK -.BLUE EQU 16*COLORS.INC.BLUE -.GREEN EQU 16*COLORS.INC.GREEN -.CYAN EQU 16*COLORS.INC.CYAN -.RED EQU 16*COLORS.INC.RED -.MAGENTA EQU 16*COLORS.INC.MAGENTA -.BROWN EQU 16*COLORS.INC.BROWN -.LGRAY EQU 16*COLORS.INC.LGRAY -.DGRAY EQU 16*COLORS.INC.DGRAY -.LBLUE EQU 16*COLORS.INC.LBLUE -.LGREEN EQU 16*COLORS.INC.LGREEN -.LCYAN EQU 16*COLORS.INC.LCYAN -.LRED EQU 16*COLORS.INC.LRED -.LMAGENT EQU 16*COLORS.INC.LMAGENT -.YELLOW EQU 16*COLORS.INC.YELLOW -.WHITE EQU 16*COLORS.INC.WHITE -.FLASH EQU #80 -*/ - ENDMODULE + include 'shared_includes/constants/standart_colors.inc' ; \ No newline at end of file diff --git a/src/bios/shared/DEFINES.INC b/src/bios/shared/DEFINES.INC index f2a390a..d329567 100644 --- a/src/bios/shared/DEFINES.INC +++ b/src/bios/shared/DEFINES.INC @@ -7,7 +7,7 @@ DEFINE NeedSafePort_Y 1 ; !!!!! если 0, то в режиме sp-спектрума некоторые процедуры могут засрать экран DEFINE Pashalki 0 ; DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' - + DEFINE StandartCGApallete 1 ; Подключать палитру из standart_colors.inc ; Задержка в кадрах после отрисовки логотипа (0 = 256) diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 72b1d2c..666c9e3 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ