Sprinter-Core/src/bios/exp/FUNC_SCREEN.ASM

1146 lines
18 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;******************************************************************
; ¢å®¤: DE - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì,
; B - 梥â â®çª¨, A - íªà ­
PIC_FN1:
AND A
SCF
RET NZ
CCF
IN A,(PORT_Y)
PUSH AF
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(WIN_ID_0.GRAF_Y)
ADD A,E
OUT (PORT_Y),A
LD A,B
LD BC,(WIN_ID_0.GRAF_X)
ADD HL,BC
LD B,A
LD A,#50
OUT (SLOT3),A
LD (HL),A
EX AF,AF'
OUT (SLOT3),A
POP AF
OUT (PORT_Y),A
RET
; ¢å®¤: DE - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì.
; IX - ¤«¨­  «¨­¨¨ ¢ â®çª å ­¥ 0 !!!
; FILL - by A
; ?????
PIC_FN2:
LD D,A
IN A,(SLOT1)
EX AF,AF'
LD A,B
ADD A,#50
OUT (SLOT1),A
BIT 0,B
LD BC,#40+#4000
JR Z,PIC_FN2_NO_2ND
LD BC,#40+320+#4000
PIC_FN2_NO_2ND:
ADD HL,BC
LD A,E
OUT (PORT_Y),A
LD A,XH
AND A
JR Z,PIC_FN2_NO256
PIC_FN2_256L:
LD B,64
PIC_FN2_256:
LD (HL),D
INC HL
LD (HL),D
INC HL
LD (HL),D
INC HL
LD (HL),D
INC HL
DJNZ PIC_FN2_256
DEC A
JR NZ,PIC_FN2_256L
PIC_FN2_NO256:
LD B,XL
AND A
RR B
JR NC,PIC_FN2_NO1
LD (HL),D
INC HL
AND A
PIC_FN2_NO1:
RR B
JR NC,PIC_FN2_NO2
LD (HL),D
INC HL
LD (HL),D
INC HL
AND A
PIC_FN2_NO2:
XOR A
CP B
JR Z,PIC_FN2_NO4
PIC_FN2_4:
LD (HL),D
INC HL
LD (HL),D
INC HL
LD (HL),D
INC HL
LD (HL),D
INC HL
DJNZ PIC_FN2_4
PIC_FN2_NO4:
EX AF,AF'
OUT (SLOT1),A
XOR A
OUT (PORT_Y),A
RET
;************************************************************************
; ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì.
; A',HL' -  ¤à¥á ¤ ­­ëå ¢® ¢â®à®© áâà ­¨æ¥ !
; BC' - ¤«¨­  ¤ ­­ëå
; ‚›‚Ž„ ˆ<E280B9>ˆˆ ’Ž—…Š
PIC_FN3:
IN A,(SLOT3)
LD C,A
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD (SYS_PAGE.COPY_SLOT3),A
IN A,(SLOT2)
LD (SYS_PAGE.COPY_SLOT2),A
IN A,(SLOT1)
LD (SYS_PAGE.COPY_SLOT1),A
LD A,B
ADD A,#50
OUT (SLOT1),A
BIT 0,B
LD BC,#40 + #4000
JR Z,PIC_FN3_NO_2ND
LD BC,#40 + 320 + #4000
PIC_FN3_NO_2ND:
ADD HL,BC
LD A,E
OUT (PORT_Y),A
LD A,H
EXX
LD D,A
EXX
LD A,L
EXX
LD E,A
EXX
EX AF,AF'
OUT (SLOT2),A
EX AF,AF'
LD HL,SYS_PAGE.RAM_TABLE
LD L,A
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(HL)
OUT (SLOT3),A
EXX
LDIR
BIT 6,H
JR Z,PIC_FN3_NO
RES 6,H
EX AF,AF'
PIC_FN3_NO:
EXX
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(SYS_PAGE.COPY_SLOT1)
OUT (SLOT1),A
LD A,(SYS_PAGE.COPY_SLOT2)
OUT (SLOT2),A
LD A,(SYS_PAGE.COPY_SLOT3)
OUT (SLOT3),A
XOR A
OUT (PORT_Y),A
RET
;**************************************************************************
;PIC_FN4:
; ¢å®¤: HL - ¤ ­­ë¥ ¯ «¨âàë RGB, E - ­ ç «ì­ë© 梥â
; D - ç¨á«® 梥⮢, B - PAL-mask, A - page PAL
PIC_SET_PAL:
PUSH IX
EX AF,AF'
IN A,(PORT_Y)
PUSH AF ; á®åà ­¨âì ¯®«®¦¥­¨¥ PORT_Y
LD A,E
OUT (PORT_Y),A ; ­ ç «ì­ë© 梥⠢ ¯®àâ
LD A,D ; á®åà ­¨âì ç¨á«® 梥⮢
EX AF,AF' ; ¢¥à­ãâì áâà ­¨æã PAL
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
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
POP AF
JR C,PIC_GET_PAL
; 横« ãáâ ­®¢ª¨ 梥⮢ ¯ «¨âàë
.loopPal:
LD A,(HL) ; B
AND D
LD (IX+2),A
INC HL
LD A,(HL) ; G
AND D
LD (IX+1),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,(PORT_Y)
INC A
OUT (PORT_Y),A
DJNZ .loopPal ; ¢ë¯®«­ïâì, ¯®ª  ­¥ 0
.exit: OUT (C),E ; ¢®ááâ ­®¢¨âì áâà ­¨æã 3
POP AF
OUT (PORT_Y),A ; ¢®ááâ ­®¢¨âì Y_PORT
POP IX
AND A
RET
PIC_GET_PAL:
; 横« ç⥭¨ï 梥⮢ ¯ «¨âàë
.loopPal:
LD A,(IX+2)
LD (HL),A ; B
INC HL
LD A,(IX+1)
LD (HL),A ; G
INC HL
LD A,(IX+0)
LD (HL),A ; R
INC HL
LD A,(IX+3)
LD (HL),A ; Y
INC HL
IN A,(PORT_Y)
INC A
OUT (PORT_Y),A
DJNZ .loopPal ; ¢ë¯®«­ïâì, ¯®ª  ­¥ 0
JR PIC_SET_PAL.exit
;********************************************************************
PIC_FN5: ; “<E28099>ŽŠ€ <E28098><EFBFBD>ˆ MODE
LD A,E
AND 1
OUT (RGMOD),A
RET
;*******************************************************************
; “áâ ­®¢ª  ¢­ãâ७­¥© ¯ «¨âàë
; A - page_pal, E - ­®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
SET_PAL_INIT:
LD D,A
DEC B
JP Z,SET_GRAPH_PALETTE
DEC B
JP Z,SET_TXT_PALETTE.ZX
DEC B
JP Z,SET_TXT_PALETTE.IBM
; LD IX,PAL_DAT1
; JR Z,PIC_FN6_L1
; DEC B
; LD IX,PAL_DAT
; JR Z,PIC_FN6_L1
SCF
RET
;PIC_FN6_L1:
; AND 3
; ADD A,A
; ADD A,A
; ADD A,#E0
; LD L,A
; LD H,#43
; IN A,(SLOT1)
; PUSH AF
;
; LD A,#50
; OUT (SLOT1),A
; XOR A
; OUT (PORT_Y),A
; EX AF,AF'
; call PAL_LOOP_M
;
; POP AF
; OUT (SLOT1),A
; XOR A
; OUT (PORT_Y),A
;
; RET
;******************************************************************
; <20>¨á®¢ ­¨¥ «¨­¨¨.
; d… - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì
; H' - ¢ëá®â , C'/DE',B' - add_parameters
; A - color
PIC_FN7:
LD D,A
IN A,(SLOT1)
PUSH AF
LD A,B
ADD A,#50
OUT (SLOT1),A
BIT 0,B
LD BC,#40+#4000
JR Z,.no_2nd
LD BC,#40+320+#4000
.no_2nd:
ADD HL,BC
LD A,E
.loop: OUT (PORT_Y),A ; áâà ­¨æ  ¢¨¤¥®-އ“
LD (HL),D
EXX
EX AF,AF'
DEC H
JR Z,.exit
LD A,C ; NEXT HORIZONTAL
ADD A,B
LD C,A
LD A,E
EXX
ADC A,L
LD L,A
EXX
LD A,D
EXX
ADC A,H
LD H,A
INC E ; NEXT VERTICAL
EX AF,AF'
INC A
JR .loop
.exit: EXX
POP AF
OUT (SLOT1),A
XOR A
OUT (PORT_Y),A
RET
;******************************************************************
; <20>¨á®¢ ­¨¥ «¨­¨¨.
; d… - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì
; H' - ¢ëá®â , C'/DE',B' - add_parameters
; (IX) - colors
PIC_FN8:
IN A,(SLOT1)
PUSH AF
LD A,B
ADD A,#50
OUT (SLOT1),A
BIT 0,B
LD BC,#40+#4000
JR Z,.no_2nd
LD BC,#40+320+#4000
.no_2nd:
ADD HL,BC
LD A,E
.loop: OUT (PORT_Y),A ; áâà ­¨æ  ¢¨¤¥®-އ“
LD D,(IX)
INC IX
LD (HL),D
EXX
EX AF,AF'
DEC H
JR Z,.exit
LD A,C ; NEXT HORIZONTAL
ADD A,B
LD C,A
LD A,E
EXX
ADC A,L
LD L,A
EXX
LD A,D
EXX
ADC A,H
LD H,A
INC E ; NEXT VERTICAL
EX AF,AF'
INC A
JR .loop
.exit: EXX
POP AF
OUT (SLOT1),A
XOR A
OUT (PORT_Y),A
RET
;**************************************************
; ‚뢮¤ á¯à ©â  ­  íªà ­
; HL - £®à¨§®â «ì, dE - ¢¥à⨪ «ì
; A',HL' -  ¤à¥á ¤ ­­ëå
PIC_FN9:
;*********************************
; HL,E - ª®®à¤¨­ âë D - color
; B - Magnify
PIC_FN10:
PIC_FN11:
PIC_FN12:
PIC_FN13:
PIC_FN14:
PIC_FN15:
SCF
RET
;************************************
;************************************
; SYCLES EQU 0
; ;START EQU 1
; ST1 EQU 2
; DPAL1 EQU 3
; ST2 EQU 4
; DPAL2 EQU 5
; MACRO NEXT_LIN_H
; EX AF,AF'
; INC A
; OUT (PORT_Y),A
; EX AF,AF'
; ENDM
; MACRO NEXT_LIN_HP
; EX AF,AF'
; INC A
; OUT (PORT_Y),A
; JR NZ,.MD_NO_INC_H
; INC L
; .MD_NO_INC_H:
; EX AF,AF'
; ENDM
;****************************************
; ‡ £à㧪  ०¨¬  íªà ­ .
;****************************************
; CALL SINC_DEF
; CALL SET_TXT_PALETTE.ZX
; RET
;****************************************
;!TODO âãâ äã­ªæ¨ï
CL0 EQU 200
CL1 EQU 240
SET_TXT_PALETTE:
.IBM: LD DE,#8000
JR .TXT
;
.ZX: LD DE,0
.TXT: PUSH IX
IN A,(PORT_Y)
PUSH AF
IN A,(SLOT3)
EX AF,AF'
LD A,#50
OUT (SLOT3),A
;
LD IX,#C3F0 ; !HARDCODE  ¤à¥á ¯ «¨âàë?
.generate_loop:
CALL GENERATE_PAL1
LD A,E
OUT (PORT_Y),A
LD (IX),L ; R
LD (IX+1),B ; G
LD (IX+2),C ; B
LD (IX+3),H ; i ?
INC E
JR NZ,.generate_loop
;
LD BC,4
ADD IX,BC
INC D
LD A,D
AND 3
JR NZ,.generate_loop
;
EX AF,AF'
OUT (SLOT3),A
POP AF
OUT (PORT_Y),A
POP IX
RET
; £¥­¥à æ¨ï ᯥªâà㬮¢áª®© ¯ «¨âàë.
; ‚室: 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_NO6
LD B,A
.PP_NO3: JR .PP_NO6
;
.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,.NO_FLH
BIT 1,D
JR Z,.PAPER
.NO_FLH:
BIT 0,D
JR Z,.PAPER
.INK:
.NO_INTENS:
LD A,#A8
.INTENS:
BIT 0,E ; BLUE
JR Z,.PPI_NO4
LD C,A
.PPI_NO4:
BIT 2,E ; RED
JR Z,.PPI_NO5
LD L,A
.PPI_NO5:
BIT 1,E ; GREEN
JR Z,.PPI_NO6
LD B,A
.PPI_NO6:
LD A,E
AND #0F
CP 6
JR NZ,.no_correct
LD B,#54
.no_correct:
BIT 3,E
JR Z,GENERATE_PAL1.PP_NO6
LD A,#54
ADD A,C
LD C,A
LD A,#54
ADD A,B
LD B,A
LD A,#54
ADD A,L
LD L,A
JR GENERATE_PAL1.PP_NO6
.PAPER:
LD A,#A8
BIT 4,E ; BLUE
JR Z,.PPI_NO4X
LD C,A
.PPI_NO4X:
BIT 6,E ; RED
JR Z,.PPI_NO5X
LD L,A
.PPI_NO5X:
BIT 5,E ; GREEN
JR Z,.PPI_NO6X
LD B,A
.PPI_NO6X:
LD A,E
AND #70
CP #60
JR NZ,GENERATE_PAL1.PP_NO6
LD B,#54
JR GENERATE_PAL1.PP_NO6
;****************************************
;****************************************
;****************************************
; D - ­®¬¥à £à ä¨ç¥áª®© ¯ «¨âàë
SET_GRAPH_PALETTE:
PUSH IX
IN A,(PORT_Y)
PUSH AF
IN A,(SLOT3)
EX AF,AF'
LD A,#50
OUT (SLOT3),A
LD IX,#C3E0
LD A,D
AND 3
ADD A,A
ADD A,A
LD E,A
LD D,0
ADD IX,DE
LD E,0
XOR A
LD B,A
LD C,A
LD L,A
LD H,A
SET_PAL_GR1:
LD A,E
OUT (PORT_Y),A
LD (IX),L
LD (IX+1),B
LD (IX+2),C
LD (IX+3),H
CALL GENERATE_PAL3
INC E
LD A,E
CP 40
JR NZ,SET_PAL_GR1
XOR A
LD B,A
LD C,A
LD L,A
LD H,A
SET_PAL_GR2:
LD A,E
OUT (PORT_Y),A
LD (IX),L
LD (IX+1),B
LD (IX+2),C
LD (IX+3),H
CALL GENERATE_PAL2
INC E
JR NZ,SET_PAL_GR2
EX AF,AF'
OUT (SLOT3),A
POP AF
OUT (PORT_Y),A
POP IX
RET
;
;;*********************************
;
GENERATE_PAL3: ; gray-scale
LD A,B
ADD A,6
LD B,A
LD C,A
LD L,A
LD A,C
AND A
RRA
ADD A,L
RRA
ADD A,B
RRA
LD H,A
RET
GENERATE_PAL2: ; C - BLUE; L - RED; B - GREEN; H - INTENSITY
LD A,C
ADD A,50
LD C,A
JR NC,GEN_PAL2_L1
LD C,0
LD A,L
ADD A,50
LD L,A
JR NC,GEN_PAL2_L1
LD L,0
LD A,B
ADD A,50
LD B,A
JR NC,GEN_PAL2_L1
LD B,0
GEN_PAL2_L1:
LD A,C
AND A
RR A
ADD A,L
RR A
ADD A,B
RR A
LD H,A
RET
;
;************************************
FN_SYNC: BIT 7,A
JR Z,.old_mode
;
LD H,A
AND #60 ; check reserved bits
JR NZ,.error
;
BIT 2,H ; Set V-Sinc?
JR NZ,.set_v_sinc
;
BIT 4,H ; Set Waits?
JR Z,.error ; Error - no parameters
;
.set_waits: LD A,H
AND 8 ; check waits. Z - no waits, NZ - waits
LD H,Port_All_Mode.DEFAULT
JR Z,.no_change
LD H,Port_All_Mode.DEFAULT-Port_All_Mode.MEM_WAITS_OFF
.no_change: LD BC,(Port_All_Mode)
IN A,(C)
AND H
OUT (C),A
RET
;
.set_v_sinc: LD A,H
AND 3
JR Z,.SetDefLines
DEC A
JR Z,.SetCmosLines
DEC A
JR Z,.Set320Lines
;JR .Set312Lines
.set312lines: LD A,Port_VSYNC.SET_312L
OUT (Port_VSYNC),A
;
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (C),A
LD A,(SYS_PAGE.VSyncAndWaits)
AND 2
LD (SYS_PAGE.VSyncAndWaits),A
OUT (C),B
;
.end_set_v_sinc:
BIT 4,H
RET Z
JR .set_waits
;
.Set320Lines: LD A,Port_VSYNC.SET_320L
OUT (Port_VSYNC),A
;
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (C),A
LD A,(SYS_PAGE.VSyncAndWaits)
OR 1
LD (SYS_PAGE.VSyncAndWaits),A
OUT (C),B
JR .end_set_v_sinc
;
.SetCmosLines: LD D,CMOS_CELL.ScreenSET
CALL CMOS_RD
;
AND high CMOS_CELL.ScreenSET.Mask.Sinc ; ¢ ॣ¨áâॠA §­ ç¥­¨¥ ScreenSET
JR Z,.SetDefLines
;
BIT 6,A
JR Z,.set312lines
JR .Set320Lines
;
.old_mode: AND A
JR Z,.INT_DEF
DEC A
JR Z,.INT_SCORP
DEC A
JR Z,.INT_PENT
DEC A
JR Z,.INT_ORIG
DEC A
JR Z,.INT_CMOS_SINC
; [x] ª á⮬­ë© íªà ­ ¯® â ¡«¨æ¥ ¯®«ì§®¢ â¥«ï
DEC A
JR Z,.PROG_SCR
;
.error: SCF
RET
;
.SetDefLines: LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (C),A
LD A,(SYS_PAGE.VSyncAndWaits)
OUT (C),B
AND 1
JR Z,.set312lines
JR .Set320Lines
;
.INT_DEF: LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (C),A
LD DE,(SYS_PAGE.SCREEN_TABLE)
OUT (C),B
;
CALL Test_SCREEN_TABLE
JR NZ,.INT_CMOS_SINC
JP (IX)
;
.INT_CMOS_SINC: LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (C),A
LD DE,(SYS_PAGE.SCREEN_TABLE)
OUT (C),B
;
LD D,CMOS_CELL.ScreenSET
CALL CMOS_RD
;
AND high CMOS_CELL.ScreenSET.Mask.Int ; ¢ ॣ¨áâॠA §­ ç¥­¨¥ ScreenSET
JR NZ,.skiptest
;
CALL Test_SCREEN_TABLE
JP (IX) ; default int (non CMOS)
;
.skiptest: CP #10
JR Z,.INT_SCORP ; scorpion int
;
CP #20
JR Z,.INT_PENT ; pentagon int
;
;JR .INT_ORIG ; original int
.INT_ORIG: LD IX,SCREEN_TABLES.ORIGINAL
JR .PROG_SCR
;
.INT_SCORP: LD IX,SCREEN_TABLES.SCORPION
JR .PROG_SCR
;
.INT_PENT: LD IX,SCREEN_TABLES.PENTAGON
;JR .PROG_SCR
.PROG_SCR: IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
EX AF,AF'
LD (SYS_PAGE.COPY_SLOT3),A
IN A,(PORT_Y)
LD (SYS_PAGE.COPY_RGADR),A
;
LD (SYS_PAGE.SCREEN_TABLE),IX
XOR A
;----[START]-----------------------[? 1]
.loop_1: OUT (PORT_Y),A
EX AF,AF'
LD A,#50
OUT (SLOT3),A
LD HL,#C300
;----[START]------------------[v 2]-----
.loop_2: LD C,(IX)
;----[START]-------------[v 3]----------
.loop_3: ; ¢§ïâì  ¤à¥á ¤ ­­ëå ¤«ï § ¯¨á¨ ¢ á«ã¦¥¡­ãî ®¡« áâì íªà ­ 
LD E,(IX+1) ; take adress of line X
LD D,(IX+2)
;----[START]--------[v 4]---------------
.loop_4: LD A,(DE) ; take counter in table 1, line X, column Y
INC DE
AND A
JR Z,.loop_4_exit ; exit if zero-counter
LD B,A
LD A,(DE)
INC DE
;----[START]---[v 5]--------------------
.loop_5: LD (HL),A
INC L
LD (HL),0
INC L
LD (HL),0
;
EX AF,AF'
INC A
OUT (PORT_Y),A
EX AF,AF'
;
LD (HL),0
DEC L
LD (HL),0
DEC L
LD (HL),A
;
EX AF,AF'
INC A
OUT (PORT_Y),A
EX AF,AF'
;
DJNZ .loop_5
;--------------[^ 5]--------------------
JR .loop_4
;-------------------[^ 4]---------------
.loop_4_exit: INC HL ; next line
INC HL
INC HL
INC HL
IN A,(PORT_Y)
AND #80
OUT (PORT_Y),A
DEC C
JR NZ,.loop_3
;------------------------[^ 3]----------
INC IX ; next counter
INC IX
INC IX
LD A,(IX)
AND A
JR NZ,.loop_2
;-----------------------------[^ 2]-----
LD A,SYS_PAGE
OUT (SLOT3),A
LD IX,(SYS_PAGE.SCREEN_TABLE)
;
EX AF,AF'
ADD A,#80
JR NC,.loop_1
;----------------------------------[^ 1]
; Exit
LD A,(SYS_PAGE.COPY_RGADR)
OUT (PORT_Y),A
LD A,(SYS_PAGE.COPY_SLOT3)
OUT (SLOT3),A
.exit: OR A
RET
;
;DE - ᮤ¥à¦¨¬®¥ SYS_PAGE.SCREEN_TABLE
Test_SCREEN_TABLE:
LD HL,SCREEN_TABLES.SCORPION
AND A
SBC HL,DE
LD IX,FN_SYNC.INT_SCORP
RET Z
;
LD HL,SCREEN_TABLES.ORIGINAL
AND A
SBC HL,DE
LD IX,FN_SYNC.INT_ORIG
RET Z
;
LD HL,SCREEN_TABLES.PENTAGON
AND A
SBC HL,DE
LD IX,FN_SYNC.INT_PENT
RET Z
AND A
RET
;--- Screen data table 1: counter1, data1 .. counterX, dataX
SCREEN_TABLES:
; | ç¨á«® | §­ ç¥­¨ï |
; | áâப | ¢ |
; | /2 | áâப å |
.SCR: DB 41 , #F8
DB 3 , #FC
DB 4 , #FC
DB 7 , #FC
DB 9 , #F8
DB 0
;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0
.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0
.INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 0
.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0
.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0
.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0
;---------------------------------------
;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX
;
; | ª®«-¢® | §­ ç¥­¨ï |
; | áâப | ¢ |
; | | áâப¥ |
.PENTAGON: DB 33 : DW .SCR
DB 1 : DW .INT ; DW .BLN
DB 3 : DW .SNC
DB 1 : DW .BLN
DB 1 : DW .SCR
DB 1 : DW .RES
DB 0 ; end
.SCORPION: DB 31 : DW .SCR
DB 1 : DW .INT_SC
DB 1 : DW .SCR
DB 1 : DW .SNC
DB 3 : DW .SNC
DB 1 : DW .BLN
DB 2 : DW .RES
DB 0 ; end
.ORIGINAL: DB 33 : DW .SCR
DB 1 : DW .SNC
DB 1 : DW .INT
DB 2 : DW .SNC
DB 1 : DW .BLN
DB 1 : DW .SCR
DB 1 : DW .RES
DB 0 ; end
;---------------------------------------
;************************************
;
; <20>ªà ­­ë¥ â ¡«¨æë
;
;⥪á⮢®¥ ®ª­® 80x32
LP_SCR_80:
DB 40,32,0,0,%0001'1011,0,0,0
BLOCK 8,0
;⥪á⮢®¥ ®ª­® 40x32
LP_SCR_40:
DB 40,32,0,0,%0111'1011,0,0,0
BLOCK 8,0
;ᯥªâà㬮¢áª®¥ ®ª­® 32x24
LP_SCR_32:
DB 32,24,4,4,%0011'0000,1,0,0
BLOCK 8,0
;⥪á⮢®¥ ®ª­® 64x24
LP_SCR_64:
DB 32,24,4,4,%1001'1011,0,0,0
BLOCK 8,0
;£à ä¨ç¥áª®¥ ®ª­® 0
PIC_320X256_1:
DB 40,32,0,0,%0010'0000,0,8,0
BLOCK 8,0
;£à ä¨ç¥áª®¥ ®ª­® 1
PIC_320X256_2:
DB 40,32,0,0,%0110'0000,0,48,0
BLOCK 8,0
;************************************
;