mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 17:31:45 +03:00
526 lines
7.6 KiB
NASM
526 lines
7.6 KiB
NASM
|
||
;******************************************************************
|
||
PIC_FN1: ; ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®â «ì,
|
||
; B - 梥â â®çª¨, A - íªà
|
||
AND A
|
||
SCF
|
||
RET NZ
|
||
|
||
IN A,(RGADR)
|
||
PUSH AF
|
||
|
||
IN A,(PAGE3)
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE3),A
|
||
|
||
LD A,(WIN_MAP_IX+WIN_GRAF_Y)
|
||
ADD A,E
|
||
OUT (RGADR),A
|
||
LD A,B
|
||
LD BC,(WIN_MAP_IX+WIN_GRAF_X)
|
||
ADD HL,BC
|
||
LD B,A
|
||
LD A,50H
|
||
OUT (PAGE3),A
|
||
LD (HL),A
|
||
EX AF,AF'
|
||
OUT (PAGE3),A
|
||
|
||
POP AF
|
||
OUT (RGADR),A
|
||
RET
|
||
|
||
|
||
PIC_FN2: ; ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®â «ì.
|
||
; IX - ¤«¨ «¨¨¨ ¢ â®çª å ¥ 0 !!!
|
||
; FILL - by A
|
||
LD D,A ; ????
|
||
IN A,(PAGE1)
|
||
EX AF,AF'
|
||
|
||
LD A,B
|
||
ADD A,50H
|
||
OUT (PAGE1),A
|
||
|
||
BIT 0,B
|
||
LD BC,40H+04000H
|
||
JR Z,PIC_FN2_NO_2ND
|
||
LD BC,40H+320+04000H
|
||
PIC_FN2_NO_2ND:
|
||
ADD HL,BC
|
||
|
||
LD A,E
|
||
OUT (RGADR),A
|
||
|
||
DB 0DDH
|
||
LD A,H
|
||
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:
|
||
DB 0DDH
|
||
LD B,L
|
||
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 (PAGE1),A
|
||
XOR A
|
||
OUT (RGADR),A
|
||
RET
|
||
|
||
;************************************************************************
|
||
PIC_FN3: ; ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®â «ì.
|
||
; A',HL' - ¤à¥á ¤ ëå ¢® ¢â®à®© áâà ¨æ¥ !
|
||
; BC' - ¤«¨ ¤ ëå
|
||
; ‚›‚Ž„ ‹ˆ<E280B9>ˆˆ ’Ž—…Š
|
||
IN A,(PAGE3)
|
||
LD C,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE3),A
|
||
LD A,C
|
||
LD (COPY_PAGE3),A
|
||
IN A,(PAGE2)
|
||
LD (COPY_PAGE2),A
|
||
IN A,(PAGE1)
|
||
LD (COPY_PAGE1),A
|
||
|
||
LD A,B
|
||
ADD A,50H
|
||
OUT (PAGE1),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 (PAGE2),A
|
||
EX AF,AF'
|
||
LD HL,RAMD_FAT
|
||
LD L,A
|
||
LD A,SYS_PAGE
|
||
OUT (PAGE3),A
|
||
LD A,(HL)
|
||
OUT (PAGE3),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 (PAGE3),A
|
||
LD A,(COPY_PAGE1)
|
||
OUT (PAGE1),A
|
||
LD A,(COPY_PAGE2)
|
||
OUT (PAGE2),A
|
||
LD A,(COPY_PAGE3)
|
||
OUT (PAGE3),A
|
||
|
||
XOR A
|
||
OUT (RGADR),A
|
||
RET
|
||
|
||
;**************************************************************************
|
||
PIC_FN4: ; ¢å®¤: HL - ¤ ë¥ ¯ «¨âàë RGB, E - ç «ìë© æ¢¥â
|
||
; D - ç¨á«® 梥⮢, B - PAL-mask, A - page 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,PAGE3 ; ¥á«¨ ¨¦¥ 8000h
|
||
LD D,0C3H ; â® £à ä.íªà áâà ¨æ¥ 3
|
||
JR Z,PIC_FN4_NO_PAGE1
|
||
LD D,043H ; ¨ ç¥
|
||
LD C,PAGE1 ; áâà ¨æ¥ 1
|
||
PIC_FN4_NO_PAGE1:
|
||
|
||
ADD A,A
|
||
;JR C,PIC_PAL_READ
|
||
|
||
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,50H ; áâà ¨æ £à ä¨ç¥áª®£® RAM
|
||
OUT (C),A
|
||
|
||
PIC_FN4_L1: ; 横« ãáâ ®¢ª¨ 梥⮢ ¯ «¨âàë
|
||
|
||
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 PIC_FN4_L1 ; ¢ë¯®«ïâì, ¯®ª ¥ 0
|
||
|
||
OUT (C),E ; ¢®ááâ ®¢¨âì áâà ¨æã 3
|
||
|
||
POP AF
|
||
OUT (RGADR),A ; ¢®ááâ ®¢¨âì Y_PORT
|
||
POP IX
|
||
;AND A
|
||
RET
|
||
|
||
; PIC_PAL_READ:
|
||
|
||
; 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,50H ; áâà ¨æ £à ä¨ç¥áª®£® RAM
|
||
; OUT (C),A
|
||
|
||
; PIC_FN4_L2: ; 横« ãáâ ®¢ª¨ 梥⮢ ¯ «¨âàë
|
||
|
||
; 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 PIC_FN4_L2 ; ¢ë¯®«ïâì, ¯®ª ¥ 0
|
||
|
||
; OUT (C),E ; ¢®ááâ ®¢¨âì áâà ¨æã 3
|
||
|
||
; POP AF
|
||
; OUT (RGADR),A ; ¢®ááâ ®¢¨âì Y_PORT
|
||
; POP IX
|
||
; AND A
|
||
; RET
|
||
|
||
|
||
;********************************************************************
|
||
PIC_FN5: ; “‘’€<E28099>ނЀ ‘’<E28098>€<EFBFBD>ˆ–› MODE
|
||
LD A,E
|
||
AND 1
|
||
OUT (RGMOD),A
|
||
RET
|
||
;*******************************************************************
|
||
PIC_FN6: ; A - page_pal, E - ®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
|
||
|
||
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,0E0H
|
||
; LD L,A
|
||
; LD H,43H
|
||
; IN A,(PAGE1)
|
||
; PUSH AF
|
||
;
|
||
; LD A,50H
|
||
; OUT (PAGE1),A
|
||
; XOR A
|
||
; OUT (RGADR),A
|
||
; EX AF,AF'
|
||
; call PAL_LOOP_M
|
||
;
|
||
; POP AF
|
||
; OUT (PAGE1),A
|
||
; XOR A
|
||
; OUT (RGADR),A
|
||
;
|
||
; RET
|
||
|
||
;******************************************************************
|
||
PIC_FN7: ; <20>¨á®¢ ¨¥ «¨¨¨. d… - ¢¥à⨪ «ì, HL - £®à¨§®â «ì
|
||
; H' - ¢ëá®â , C'/DE',B' - add_parameters
|
||
; A - color
|
||
LD D,A
|
||
IN A,(PAGE1)
|
||
PUSH AF
|
||
|
||
LD A,B
|
||
ADD A,50H
|
||
OUT (PAGE1),A
|
||
|
||
BIT 0,B
|
||
LD BC,40H+04000H
|
||
JR Z,PIC_FN7_NO_2ND
|
||
LD BC,40H+320+04000H
|
||
PIC_FN7_NO_2ND:
|
||
ADD HL,BC
|
||
|
||
LD A,E
|
||
PIC_FN7_L1:
|
||
OUT (RGADR),A ; áâà ¨æ ¢¨¤¥®-އ“
|
||
LD (HL),D
|
||
|
||
EXX
|
||
EX AF,AF'
|
||
|
||
DEC H
|
||
JR Z,PIC_FN7_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 PIC_FN7_L1
|
||
|
||
PIC_FN7_EXIT:
|
||
EXX
|
||
POP AF
|
||
OUT (PAGE1),A
|
||
XOR A
|
||
OUT (RGADR),A
|
||
RET
|
||
|
||
;******************************************************************
|
||
PIC_FN8: ; <20>¨á®¢ ¨¥ «¨¨¨. d… - ¢¥à⨪ «ì, HL - £®à¨§®â «ì
|
||
; H' - ¢ëá®â , C'/DE',B' - add_parameters
|
||
; (IX) - color
|
||
IN A,(PAGE1)
|
||
PUSH AF
|
||
|
||
LD A,B
|
||
ADD A,50H
|
||
OUT (PAGE1),A
|
||
|
||
BIT 0,B
|
||
LD BC,40H+04000H
|
||
JR Z,PIC_FN8_NO_2ND
|
||
LD BC,40H+320+04000H
|
||
PIC_FN8_NO_2ND:
|
||
ADD HL,BC
|
||
|
||
LD A,E
|
||
|
||
PIC_FN8_L1:
|
||
OUT (RGADR),A ; áâà ¨æ ¢¨¤¥®-އ“
|
||
LD D,(IX)
|
||
INC IX
|
||
LD (HL),D
|
||
EXX
|
||
EX AF,AF'
|
||
|
||
DEC H
|
||
JR Z,PIC_FN8_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 PIC_FN8_L1
|
||
|
||
PIC_FN8_EXIT:
|
||
EXX
|
||
POP AF
|
||
OUT (PAGE1),A
|
||
XOR A
|
||
OUT (RGADR),A
|
||
RET
|
||
|
||
;**************************************************
|
||
; ‚뢮¤ á¯à ©â íªà
|
||
PIC_FN9: ; HL - £®à¨§®â «ì, dE - ¢¥à⨪ «ì
|
||
; A',HL' - ¤à¥á ¤ ëå
|
||
;*********************************
|
||
|
||
PIC_FN10: ; HL,E - ª®®à¤¨ âë D - color
|
||
; B - Magnify
|
||
PIC_FN11:
|
||
|
||
PIC_FN12:
|
||
|
||
PIC_FN13:
|
||
|
||
PIC_FN14:
|
||
|
||
PIC_FN15:
|
||
SCF
|
||
RET
|
||
|
||
;************************************
|
||
;
|
||
; <20>ªà ë¥ â ¡«¨æë
|
||
|
||
; LP_SCR_80:
|
||
; DB 40,32,0,0,1BH,0,0,0
|
||
; DB 0,0,0,0,0,0,0,0
|
||
; ;
|
||
; LP_SCR_40:
|
||
; DB 40,32,0,0,7BH,0,0,0
|
||
; DB 0,0,0,0,0,0,0,0
|
||
|
||
; LP_SCR_32:
|
||
; DB 32,24,4,4,30H,1,0,0
|
||
; DB 0,0,0,0,0,0,0,0
|
||
|
||
; LP_SCR_64:
|
||
; DB 32,24,4,4,9BH,0,0,0
|
||
; DB 0,0,0,0,0,0,0,0
|
||
|
||
; PIC_320X256_1:
|
||
; DB 40,32,0,0,20H,0,8,0
|
||
; DB 0,0,0,0,0,0,0,0
|
||
; ;
|
||
; PIC_320X256_2:
|
||
; DB 40,32,0,0,60H,0,48,0
|
||
; DB 0,0,0,0,0,0,0,0
|
||
|
||
; ;************************************
|
||
;
|
||
|
||
|