From 8ecbdfa4fe6fddf1d18f5a41b0c01edde89e61a7 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sun, 10 Sep 2023 06:01:32 +1000 Subject: [PATCH] ... --- Shared_Includes | 2 +- src/bios/exp/FLEX.asm | 228 ++++++++++++++------------------ src/bios/exp/FUNC_PIC.ASM | 22 +-- src/bios/rom/SETUP/VIDEO_IO.asm | 19 +-- 4 files changed, 112 insertions(+), 159 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 90f4b54..6c92964 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 90f4b54edb1effbd0b57b0ee64771d27e84023ff +Subproject commit 6c92964be4fbbbec546d52ad6e2b51fd596d8a02 diff --git a/src/bios/exp/FLEX.asm b/src/bios/exp/FLEX.asm index ed99152..6986b01 100644 --- a/src/bios/exp/FLEX.asm +++ b/src/bios/exp/FLEX.asm @@ -162,10 +162,10 @@ CL1 EQU 240 SET_PAL_IBM: LD DE,#8000 - JR SET_PAL_ + JR SET_PAL_TXT SET_PAL_ZX: LD DE,0 -SET_PAL_: +SET_PAL_TXT: PUSH IX IN A,(RGADR) PUSH AF @@ -175,22 +175,23 @@ SET_PAL_: OUT (SLOT3),A LD IX,#C3F0 ; !HARDCODE адрес палитры? -SET_PAL_ZX1: +.generate_loop: CALL GENERATE_PAL1 LD A,E OUT (RGADR),A - LD (IX),L - LD (IX+1),B - LD (IX+2),C - LD (IX+3),H + LD (IX),L ; R + LD (IX+1),B ; G + LD (IX+2),C ; B + LD (IX+3),H ; i ? INC E - JR NZ,SET_PAL_ZX1 + JR NZ,.generate_loop + ; LD BC,4 ADD IX,BC INC D LD A,D AND 3 - JR NZ,SET_PAL_ZX1 + JR NZ,.generate_loop EX AF,AF' OUT (SLOT3),A @@ -200,155 +201,126 @@ SET_PAL_ZX1: RET ; генерация спектрумовской палитры. -; E - атрибут, D - номер PAL -; ВЫХОД - C - BLUE, L - RED, B - GREEN, H - INTENSITY -GENERATE_PAL1: - XOR A - LD C,A - LD B,A - LD L,A - - BIT 7,D - JR NZ,GENERATE_IBM - - BIT 1,D - JR NZ,GEM_PAL_FLH ;!FIXIT походу никогда не вызывается -GEM_PAL_NOF: - BIT 0,D - JR Z,GEN_PAL_PAP - -GEN_PAL_INK: - LD A,CL0 - BIT 6,E - JR Z,GEN_PAL_NOI1 - LD A,CL1 -GEN_PAL_NOI1: - BIT 0,E ; BLUE - JR Z,GEN_PP_NO1 - LD C,A -GEN_PP_NO1: - BIT 1,E ; RED - JR Z,GEN_PP_NO2 - LD L,A -GEN_PP_NO2: - BIT 2,E ; GREEN - JR Z,GEN_PP_NO3 - LD B,A -GEN_PP_NO3: - JR GEN_PP_NO6 +; Вход: E - атрибут, D - номер палитры +; ВЫХОД: L - red, B - green, C - blue, H - intensity +GENERATE_PAL1: XOR A + LD C,A + LD B,A + LD L,A + BIT 7,D + JR NZ,GENERATE_IBM + BIT 1,D + JR NZ,.FLH +.NOF: BIT 0,D + JR Z,.PAPER +.INK: LD A,CL0 + BIT 6,E + JR Z,.NOI1 + LD A,CL1 +.NOI1: BIT 0,E ; BLUE + JR Z,.NO1 + LD C,A +.NO1: BIT 1,E ; RED + JR Z,.PP_NO2 + LD L,A +.PP_NO2: BIT 2,E ; GREEN + JR Z,.PP_NO3 + LD B,A +.PP_NO3: JR .PP_NO6 ; -; -GEM_PAL_FLH: - BIT 7,E - JR Z,GEM_PAL_NOF - BIT 0,D - JR Z,GEN_PAL_INK - -GEN_PAL_PAP: - LD A,CL0 - BIT 6,E - JR Z,GEN_PAL_NOI2 - LD A,CL1 -GEN_PAL_NOI2: - BIT 3,E ; BLUE - JR Z,GEN_PP_NO4 - LD C,A -GEN_PP_NO4: - BIT 4,E ; RED - JR Z,GEN_PP_NO5 - LD L,A -GEN_PP_NO5: - BIT 5,E ; GREEN - JR Z,GEN_PP_NO6 - LD B,A -GEN_PP_NO6: - - LD A,C - AND A - RRA - ADD A,L - RRA - ADD A,B - RRA - LD H,A ; B/W mode - - RET - +.FLH: BIT 7,E + JR Z,.NOF + BIT 0,D + JR Z,.INK +.PAPER: LD A,CL0 + BIT 6,E + JR Z,.NOI2 + LD A,CL1 +.NOI2: BIT 3,E ; BLUE + JR Z,.PP_NO4 + LD C,A +.PP_NO4: BIT 4,E ; RED + JR Z,.PP_NO5 + LD L,A +.PP_NO5: BIT 5,E ; GREEN + JR Z,.PP_NO6 + LD B,A +.PP_NO6: LD A,C + AND A + RRA + ADD A,L + RRA + ADD A,B + RRA + LD H,A ; B/W mode + RET ;**************************************** GENERATE_IBM: BIT 7,E - JR Z,GEN_IBM_NO_FLH + JR Z,.NO_FLH BIT 1,D - JR Z,GEN_IBM_PAPER - -GEN_IBM_NO_FLH: + JR Z,.PAPER +.NO_FLH: BIT 0,D - JR Z,GEN_IBM_PAPER - -GEN_IBM_INK: - -GEN_NO_INTENS: - LD A,0A8h -GEN_INTENS: + JR Z,.PAPER +.INK: +.NO_INTENS: + LD A,#A8 +.INTENS: BIT 0,E ; BLUE - JR Z,GEN_PPI_NO4 + JR Z,.PPI_NO4 LD C,A -GEN_PPI_NO4: +.PPI_NO4: BIT 2,E ; RED - JR Z,GEN_PPI_NO5 + JR Z,.PPI_NO5 LD L,A -GEN_PPI_NO5: +.PPI_NO5: BIT 1,E ; GREEN - JR Z,GEN_PPI_NO6 + JR Z,.PPI_NO6 LD B,A -GEN_PPI_NO6: - +.PPI_NO6: LD A,E - AND 0Fh + AND #0F CP 6 - JR NZ,no_correct - LD B,54h -no_correct: + JR NZ,.no_correct + LD B,#54 +.no_correct: BIT 3,E - JR Z,GEN_PP_NO6 + JR Z,GENERATE_PAL1.PP_NO6 - LD A,54h + LD A,#54 ADD A,C LD C,A - LD A,54h + LD A,#54 ADD A,B LD B,A - LD A,54h + LD A,#54 ADD A,L LD L,A - - JR GEN_PP_NO6 - -GEN_IBM_PAPER: - LD A,0A8h + JR GENERATE_PAL1.PP_NO6 +.PAPER: + LD A,#A8 BIT 4,E ; BLUE - JR Z,GEN_PPI_NO4X + JR Z,.PPI_NO4X LD C,A -GEN_PPI_NO4X: +.PPI_NO4X: BIT 6,E ; RED - JR Z,GEN_PPI_NO5X + JR Z,.PPI_NO5X LD L,A -GEN_PPI_NO5X: +.PPI_NO5X: BIT 5,E ; GREEN - JR Z,GEN_PPI_NO6X + JR Z,.PPI_NO6X LD B,A -GEN_PPI_NO6X: - +.PPI_NO6X: LD A,E - AND 070h - CP 60h - JR NZ,no_correct2 - LD B,54h -no_correct2: - JR GEN_PP_NO6 - + AND #70 + CP #60 + JR NZ,GENERATE_PAL1.PP_NO6 + LD B,#54 + JR GENERATE_PAL1.PP_NO6 ;**************************************** + ;**************************************** ;**************************************** @@ -364,7 +336,7 @@ SET_PAL_GRAF: OUT (SLOT3),A - LD IX,0C3E0H + LD IX,#C3E0 LD A,D AND 3 ADD A,A diff --git a/src/bios/exp/FUNC_PIC.ASM b/src/bios/exp/FUNC_PIC.ASM index fc9451b..bcde2c4 100644 --- a/src/bios/exp/FUNC_PIC.ASM +++ b/src/bios/exp/FUNC_PIC.ASM @@ -259,20 +259,6 @@ PIC_SET_PAL: RET PIC_GET_PAL: - ; ADD A,A - ; AND #1C - ; XOR #E0 ; младший байт адреса 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 ; цикл чтения цветов палитры .loopPal: LD A,(IX+2) @@ -297,13 +283,6 @@ PIC_GET_PAL: DJNZ .loopPal ; выполнять, пока не 0 JR PIC_SET_PAL.exit - ; OUT (C),E ; восстановить страницу 3 - ; POP AF - ; OUT (RGADR),A ; восстановить Y_PORT - ; POP IX - ; AND A - ; RET - ;******************************************************************** PIC_FN5: ; УСТАНОВКА СТРАНИЦЫ MODE @@ -312,6 +291,7 @@ PIC_FN5: ; OUT (RGMOD),A RET ;******************************************************************* +; Установка внутренней палитры ; A - page_pal, E - номер палитры, B - тип палитры PIC_FN6: LD D,A diff --git a/src/bios/rom/SETUP/VIDEO_IO.asm b/src/bios/rom/SETUP/VIDEO_IO.asm index 23af571..e0a8eba 100644 --- a/src/bios/rom/SETUP/VIDEO_IO.asm +++ b/src/bios/rom/SETUP/VIDEO_IO.asm @@ -554,24 +554,25 @@ SETPAL4: LD HL,COLORS.CGA.PALETTE LD DE,memBUFFER.Shared LD C,#08 -DCR0: - LD B,#10 -DCR1: - PUSH BC + +DCR0: LD B,#10 ;!HARDCODE number of colors in CGA pallete PUSH HL + ; +DCR1: POP HL + PUSH HL + PUSH BC LDI LDI LDI LDI - POP HL POP BC DJNZ DCR1 - INC HL - INC HL - INC HL - INC HL + ; + INC SP + INC SP DEC C JR NZ,DCR0 + LD HL,memBUFFER.Shared LD BC,512 LDIR