533 lines
7.6 KiB
NASM
533 lines
7.6 KiB
NASM
|
||
;******************************************************************
|
||
; ¢å®¤: 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:
|
||
; 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)
|
||
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
|
||
; 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
|
||
;*******************************************************************
|
||
; A - page_pal, E - ®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
|
||
PIC_FN6:
|
||
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
|
||
|
||
;************************************
|
||
;
|
||
|
||
|