Sprinter-Core/src/bios/exp/FUNC_SCREEN.ASM
2024-08-18 07:03:22 +10:00

513 lines
7.2 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
IN A,(RGADR)
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 (RGADR),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 (RGADR),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 (RGADR),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 (RGADR),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,40H+04000H
JR Z,PIC_FN3_NO_2ND
LD BC,40H+320+04000H
PIC_FN3_NO_2ND:
ADD HL,BC
LD A,E
OUT (RGADR),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.RAMD_FAT
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 (RGADR),A
RET
;**************************************************************************
;PIC_FN4:
; ¢å®¤: HL - ¤ ­­ë¥ ¯ «¨âàë RGB, E - ­ ç «ì­ë© 梥â
; D - ç¨á«® 梥⮢, B - PAL-mask, A - page PAL
PIC_SET_PAL:
PUSH IX
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,#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,(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_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,(RGADR)
INC A
OUT (RGADR),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_PAL_GRAF
DEC B
JP Z,SET_PAL_ZX
DEC B
JP Z,SET_PAL_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 (RGADR),A
; EX AF,AF'
; call PAL_LOOP_M
;
; POP AF
; OUT (SLOT1),A
; XOR A
; OUT (RGADR),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 (RGADR),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 (RGADR),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 (RGADR),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 (RGADR),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
;************************************
;
; <20>ªà ­­ë¥ â ¡«¨æë
;
;⥪á⮢®¥ ®ª­® 80x32
LP_SCR_80:
DB 40,32,0,0,27,0,0,0
DB 0, 0,0,0, 0,0,0,0
;⥪á⮢®¥ ®ª­® 40x32
LP_SCR_40:
DB 40,32,0,0,123,0,0,0
DB 0, 0,0,0, 0,0,0,0
;ᯥªâà㬮¢áª®¥ ®ª­® 32x24
LP_SCR_32:
DB 32,24,4,4,48,1,0,0
DB 0, 0,0,0, 0,0,0,0
;⥪á⮢®¥ ®ª­® 64x24
LP_SCR_64:
DB 32,24,4,4,155,0,0,0
DB 0, 0,0,0, 0,0,0,0
;£à ä¨ç¥áª®¥ ®ª­® 0
PIC_320X256_1:
DB 40,32,0,0,32,0,8,0
DB 0, 0,0,0, 0,0,0,0
;£à ä¨ç¥áª®¥ ®ª­® 1
PIC_320X256_2:
DB 40,32,0,0,96,0,48,0
DB 0, 0,0,0, 0,0, 0,0
;************************************
;