ZX-SP-ROMs/ZX_EXP/EXP_PIC2.ASM
Anatoliy Belyanskiy 51b40b7af5 Setup
2023-06-17 04:36:58 +10:00

526 lines
7.6 KiB
NASM
Raw Permalink 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.

;******************************************************************
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
; ;************************************
;