567 lines
9.9 KiB
NASM
567 lines
9.9 KiB
NASM
|
||
def_pal_mask EQU #FF
|
||
PIC_SET_PAL_FF EQU def_pal_mask*256+BIOS.PIC_SET_PAL
|
||
ScreenPOS.SUBNAME.POS EQU 37
|
||
|
||
IF NEW_FEATURE
|
||
|
||
|
||
|
||
ENDIF
|
||
|
||
;;
|
||
ScreenPOS:
|
||
.SUBNAME:
|
||
CALL LP_GET_PLACE
|
||
LD E,.SUBNAME.POS ;!HARDCODE autodetected hdd/cdrom info
|
||
JP LP_SET_PLACE
|
||
|
||
.CRLF: CALL LP_GET_PLACE
|
||
INC D
|
||
LD E,#00
|
||
JP LP_SET_PLACE
|
||
;;
|
||
|
||
;!TODO ¯¥à¥¤¥« âì, â® ªà¨¢® ª ª-â®
|
||
DWPRINT:
|
||
LD A,(HL)
|
||
CP ' '
|
||
JR NZ,PRINTDW
|
||
INC HL
|
||
LD A,(HL)
|
||
DEC HL
|
||
CP ' '
|
||
JR NZ,PRINTDW
|
||
INC HL
|
||
INC HL
|
||
DJNZ DWPRINT
|
||
RET
|
||
;!TODO ¯¥à¥¤¥« âì, â® ªà¨¢® ª ª-â®
|
||
PRINTDW:
|
||
PUSH BC
|
||
LD E,(HL)
|
||
INC HL
|
||
LD A,(HL)
|
||
INC HL
|
||
CALL PRINT_CHAR
|
||
LD A,E
|
||
CALL PRINT_CHAR
|
||
POP BC
|
||
DJNZ PRINTDW
|
||
RET
|
||
|
||
PRINTA: LD E,A
|
||
JP LP_PRINT_ATR
|
||
|
||
PRINT_CHAR:
|
||
LD B,1
|
||
JP LP_PRINT_SYM
|
||
;
|
||
|
||
TPRINTZ: CALL LP_SET_PLACE
|
||
PRINTZ: LD B,0
|
||
LD D,B
|
||
JP LP_PRINT_LINE6
|
||
|
||
HPRINTZ: LD B,0
|
||
LD D,B
|
||
LD E,COLORS.CGA.INC.WHITE
|
||
JP LP_PRINT_LINE5
|
||
|
||
CPRINTZ: LD B,0
|
||
LD D,B
|
||
LD E,A
|
||
JP LP_PRINT_LINE5
|
||
|
||
;HL - NUMBER
|
||
IZPRINT: LD D,1
|
||
JR IPRIN
|
||
IPRINT:
|
||
LD D,0
|
||
IPRIN: LD BC,10000
|
||
CALL PRINTDG
|
||
LD BC,1000
|
||
CALL PRINTDG
|
||
LD BC,100
|
||
CALL PRINTDG
|
||
LD BC,10
|
||
CALL PRINTDG
|
||
LD A,L
|
||
ADD A,#30
|
||
JP PRINT_CHAR
|
||
|
||
PRINTDG:
|
||
LD A,#2F
|
||
PDG1: INC A
|
||
SBC HL,BC
|
||
JR NC,PDG1
|
||
ADD HL,BC
|
||
BIT 0,D
|
||
JR NZ,PDG2
|
||
CP #30
|
||
RET Z
|
||
SET 0,D
|
||
PDG2: PUSH BC
|
||
CALL PRINT_CHAR
|
||
POP BC
|
||
RET
|
||
|
||
; D - Y
|
||
; E - X
|
||
; H - CY
|
||
TLINEV:
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.UpCenter)
|
||
CALL PRSYM
|
||
DEC H
|
||
DEC H
|
||
|
||
.loop: INC D
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.VerticalLine)
|
||
CALL PRSYM
|
||
DEC H
|
||
JR NZ,.loop
|
||
|
||
INC D
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.DownCenter)
|
||
JP PRSYM
|
||
|
||
; D - Y
|
||
; E - X
|
||
; L - CX
|
||
TLINEH:
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.LeftCenter)
|
||
CALL PRSYM
|
||
DEC L
|
||
DEC L
|
||
LD A,(ElementsBuffer.HorizontalLine)
|
||
LD B,L
|
||
|
||
;CALL PRSYMB
|
||
CALL LP_PRINT_SYM
|
||
|
||
|
||
LD A,(ElementsBuffer.RightCenter)
|
||
JP PRSYM
|
||
|
||
; D - Y
|
||
; E - X
|
||
; B - CY
|
||
; C - CX
|
||
PBORDER:
|
||
PUSH BC
|
||
LD A,C
|
||
DEC A
|
||
LD (.BSHI),A
|
||
DEC A
|
||
LD (.BHOR),A
|
||
LD (.BHOR2),A
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.UpLeft)
|
||
LD H,E
|
||
CALL PRSYM
|
||
LD A,(ElementsBuffer.HorizontalLine)
|
||
.BHOR+1:
|
||
LD B,1
|
||
|
||
;CALL PRSYMB
|
||
CALL LP_PRINT_SYM
|
||
|
||
|
||
LD A,(ElementsBuffer.UpRight)
|
||
CALL PRSYM
|
||
POP BC
|
||
DEC B
|
||
DEC B
|
||
INC D
|
||
LD E,H
|
||
|
||
.loop: PUSH BC
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.VerticalLine)
|
||
CALL PRSYM
|
||
LD A,H
|
||
.BSHI+1:
|
||
ADD A,#00
|
||
LD E,A
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.VerticalLine)
|
||
CALL PRSYM
|
||
POP BC
|
||
LD E,H
|
||
INC D
|
||
DJNZ .loop
|
||
|
||
;CALL ScreenPOS.LOCAT
|
||
CALL LP_SET_PLACE
|
||
LD A,(ElementsBuffer.DownLeft)
|
||
CALL PRSYM
|
||
LD A,(ElementsBuffer.HorizontalLine)
|
||
.BHOR2+1:
|
||
LD B,1
|
||
|
||
;CALL PRSYMB
|
||
CALL LP_PRINT_SYM
|
||
|
||
LD A,(ElementsBuffer.DownRight)
|
||
CALL PRSYM
|
||
RET
|
||
|
||
PRSYM: ;LD BC,1*256 + BIOS.LP_PRINT_SYM
|
||
;JP_to_BIOS
|
||
LD B,1
|
||
JP LP_PRINT_SYM
|
||
|
||
; PRSYMB: LD C,BIOS.LP_PRINT_SYM
|
||
; JP_to_BIOS
|
||
|
||
LOGOTYP:
|
||
CALL LOGOX
|
||
LD BC,#180E
|
||
CALL G_VALUE
|
||
OR A
|
||
JR Z,EASYDLY ;MIN (DISABLE)
|
||
DEC A
|
||
JR Z,SKIPDLY ;NORMAL
|
||
|
||
LD B,LOGO_DELAY_NORM
|
||
.loop EI
|
||
push bc
|
||
HALT
|
||
call go_setup
|
||
pop bc
|
||
DJNZ .loop
|
||
SKIPDLY:
|
||
LD B,LOGO_DELAY_MAX
|
||
.MMA: PUSH BC
|
||
EI
|
||
HALT
|
||
DI
|
||
CALL FADE
|
||
POP BC
|
||
DJNZ .MMA
|
||
|
||
NOWLOGO:
|
||
LD IX,win_descriptor.tab80x32
|
||
LD HL,#0000
|
||
LD E,1
|
||
|
||
EI
|
||
HALT
|
||
DI
|
||
CALL WIN_OPEN
|
||
|
||
LD DE,0
|
||
LD HL,#0920 ;LOGOTYPE SIZE
|
||
LD B,7
|
||
JP LP_CLS_WIN
|
||
|
||
EASYDLY:
|
||
LD B,LOGO_DELAY_MIN
|
||
.loop: EI
|
||
HALT
|
||
DJNZ .loop
|
||
DI
|
||
JR NOWLOGO
|
||
|
||
LOGOX: LD IX,win_descriptor.tab320x256
|
||
LD HL,#0000
|
||
LD E,1
|
||
CALL WIN_OPEN
|
||
|
||
SAFE_PORTY
|
||
|
||
DI
|
||
LD A,1
|
||
OUT (SYS_PORT.ON),A
|
||
OUT (ROM.SLOT0),A
|
||
|
||
LD HL,MAIN_LOGO.Pallete
|
||
LD DE,memBUFFER.Shared
|
||
LD BC,MAIN_LOGO.Pallete.length
|
||
LDIR
|
||
|
||
XOR A
|
||
OUT (ROM.SLOT0),A
|
||
OUT (SYS_PORT.ON),A
|
||
EI
|
||
|
||
LD HL,memBUFFER.Shared
|
||
; A = 0
|
||
LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS
|
||
LD E,A
|
||
LD B,def_pal_mask
|
||
CALL PIC_SET_PAL
|
||
|
||
SAFE_PORTY
|
||
|
||
DI
|
||
LD A,1
|
||
OUT (SYS_PORT.ON),A
|
||
;LD A,1
|
||
OUT (ROM.SLOT0),A
|
||
|
||
LD HL,MAIN_LOGO.Raster ; ç «® ª à⨪¨ ¢ ¡ ª¥ <20>‡“
|
||
; CALL DECODE
|
||
CALL LOGO_TO_SCREEN
|
||
;
|
||
;--------------[<5B> áå «ª ]--------------[]
|
||
IF Pashalki
|
||
_PASHALKI_CODE
|
||
ENDIF
|
||
;--------------------------------------[]
|
||
;
|
||
XOR A
|
||
OUT (SYS_PORT.ON),A
|
||
OUT (ROM.SLOT0),A
|
||
EI
|
||
RET
|
||
|
||
win_descriptor:
|
||
.tab80x32 Window_UserVars{
|
||
40, ; £®à¨§®â «ìë© à §¬¥à ®ª ¢ § ª®¬¥áâ å
|
||
32, ; ¢¥à⨪ «ìë© à §¬¥à ¢ § ª®¬¥áâ å
|
||
0, ; ¯®«®¦¥¨¥ ®ª ¯® £®à¨§®â «¨ íªà ¥
|
||
0, ; ¯®«®¦¥¨¥ ®ª ¯® ¢¥à⨪ «¨ íªà ¥
|
||
%0001'1011, ; ०¨¬ § ª®¬¥áâ
|
||
0, ; ¤®¯®«¨â¥«ìë© à¥¦¨¬ § ª®¬¥áâ
|
||
0, ; ¯®«®¦¥¨¥ ¯® X ¢ ¯®«¥ £à 䨪¨ (¯® § ª®¬¥áâ ¬)
|
||
0 ; ¯®«®¦¥¨¥ ¯® Y ¢ ¯®«¥ £à 䨪¨ (¯® § ª®¬¥áâ ¬)
|
||
}
|
||
.tab320x256 Window_UserVars{
|
||
16, ; £®à¨§®â «ìë© à §¬¥à ®ª ¢ § ª®¬¥áâ å
|
||
9, ; ¢¥à⨪ «ìë© à §¬¥à ¢ § ª®¬¥áâ å
|
||
0, ; ¯®«®¦¥¨¥ ®ª ¯® £®à¨§®â «¨ íªà ¥
|
||
0, ; ¯®«®¦¥¨¥ ®ª ¯® ¢¥à⨪ «¨ íªà ¥
|
||
%0010'0000, ; ०¨¬ § ª®¬¥áâ
|
||
0, ; ¤®¯®«¨â¥«ìë© à¥¦¨¬ § ª®¬¥áâ
|
||
8, ; ¯®«®¦¥¨¥ ¯® X ¢ ¯®«¥ £à 䨪¨ (¯® § ª®¬¥áâ ¬)
|
||
0 ; ¯®«®¦¥¨¥ ¯® Y ¢ ¯®«¥ £à 䨪¨ (¯® § ª®¬¥áâ ¬)
|
||
}
|
||
;
|
||
|
||
MACRO _mFADE
|
||
LD HL,memBUFFER.Shared
|
||
; A = 0
|
||
LD B,A
|
||
.loop:
|
||
DUP 3
|
||
CP (HL)
|
||
JR Z,1F
|
||
DEC (HL)
|
||
1: INC HL
|
||
EDUP
|
||
INC HL
|
||
DJNZ .loop
|
||
ENDM
|
||
FADE: XOR A
|
||
_mFADE
|
||
_mFADE
|
||
; A = 0
|
||
LD HL,memBUFFER.Shared
|
||
; LD DE,#0000
|
||
LD D,A
|
||
LD E,A
|
||
;
|
||
LD B,def_pal_mask
|
||
CALL PIC_SET_PAL
|
||
|
||
SAFE_PORTY
|
||
|
||
go_setup: ; !FIXIT ¯¥à¥¤¥« âì TSETUP
|
||
CALL SCANKEY
|
||
RET Z
|
||
|
||
CP #1B
|
||
JP Z,.to_EXIT_SETUP
|
||
|
||
LD HL,#4F00
|
||
AND A
|
||
SBC HL,DE
|
||
jr nz,go_setup
|
||
|
||
LD IX,win_descriptor.tab80x32
|
||
LD HL,#0000
|
||
LD E,1
|
||
CALL WIN_OPEN
|
||
JP CSETUP
|
||
|
||
.to_EXIT_SETUP:
|
||
LD HL,(RET_TO_EXP_ADDR)
|
||
PUSH HL
|
||
JP EXIT_SETUP
|
||
|
||
;DECODE:
|
||
LOGO_TO_SCREEN:
|
||
PUSH HL
|
||
IN A,(SLOT1)
|
||
LD H,A
|
||
IN A,(PORT_Y)
|
||
LD L,A
|
||
EX (SP),HL
|
||
|
||
LD A,#50
|
||
OUT (SLOT1),A
|
||
LD A,72 ; !HARDCODE ª®®à¤¨ â ª à⨪¨ ¯® Y + ¢ëá®â ª à⨪¨
|
||
.loop:
|
||
DEC A
|
||
OUT (PORT_Y),A
|
||
LD DE,#4040 ; !HARDCODE ª®®à¤¨ â ª à⨪¨ ¯® •
|
||
LD BC,128 ; !HARDCODE ¤«¨ £®à¨§®â «ì®© «¨¨¨ ª à⨪¨
|
||
LDIR
|
||
OR A ; !!!!! or a
|
||
JP NZ,.loop
|
||
|
||
POP BC
|
||
LD A,B
|
||
OUT (SLOT1),A
|
||
LD A,C
|
||
OUT (PORT_Y),A
|
||
XOR A
|
||
RET
|
||
|
||
; IF !ROM_LOGO_TEST
|
||
; LOGPAL: ; palitre for logotype
|
||
; IF TEST_Build
|
||
; INCBIN './test/test2_pal.bin'
|
||
; ELSE
|
||
; INCBIN './original/logo_pal.bin'
|
||
; ENDIF
|
||
;
|
||
; IF ($-LOGPAL) < 1024
|
||
; BLOCK +(1024-($-LOGPAL)),0
|
||
; ENDIF
|
||
; ENDIF
|
||
|
||
; Original hardcoded pallete for Peters logotype
|
||
; B G R
|
||
; DB #FF,#FF,#FF,#00
|
||
; DB #8C,#A5,#A5,#00
|
||
; DB #42,#EF,#EF,#00
|
||
; DB #DE,#CE,#C6,#00
|
||
; DB #84,#39,#39,#00
|
||
; DB #CE,#8C,#84,#00
|
||
; DB #A5,#39,#31,#00
|
||
; DB #84,#7B,#7B,#00
|
||
; DB #63,#5A,#5A,#00
|
||
; DB #BD,#39,#39,#00
|
||
; DB #84,#08,#08,#00
|
||
; DB #AD,#08,#08,#00
|
||
; DB #18,#00,#00,#00
|
||
; DB #63,#08,#10,#00
|
||
; DB #94,#08,#18,#00
|
||
; DB #00,#00,#00,#00
|
||
|
||
; PALCOL:
|
||
; ; B G R
|
||
; DB #FF,#FF,#FF,#00
|
||
; DB #8C,#BD,#BD,#80
|
||
; DB #BD,#CE,#BD,#00
|
||
; DB #EF,#CE,#BD,#00
|
||
; DB #BC,#73,#73,#00
|
||
; DB #9C,#63,#63,#00
|
||
; DB #DE,#8C,#8C,#00
|
||
; DB #8C,#52,#52,#00
|
||
; DB #BD,#63,#63,#00
|
||
; DB #52,#10,#10,#00
|
||
; DB #21,#00,#00,#00
|
||
; DB #8C,#00,#00,#00
|
||
; DB #AD,#00,#00,#00
|
||
; DB #AD,#10,#21,#00
|
||
; DB #8C,#00,#10,#00
|
||
; DB #00,#00,#00,#00
|
||
|
||
|
||
|
||
SET_CGA:
|
||
CALL SETPAL4
|
||
LD A,4 ; page_pal
|
||
LD HL,memBUFFER.Shared
|
||
LD DE,#0000 ; D - ELEMENTS,E - COLOR
|
||
LD B,def_pal_mask
|
||
CALL PIC_SET_PAL
|
||
|
||
LD A,6 ; page_pal
|
||
LD HL,memBUFFER.Shared
|
||
LD DE,#0000 ;D - ELEMENTS,E - COLOR
|
||
LD B,def_pal_mask
|
||
CALL PIC_SET_PAL
|
||
|
||
LD A,7 ; page_pal
|
||
LD HL,#80*4+memBUFFER.Shared
|
||
LD DE,#8080 ;D - ELEMENTS,E - COLOR
|
||
LD B,def_pal_mask
|
||
CALL PIC_SET_PAL
|
||
;
|
||
|
||
CALL SETPAL5
|
||
LD A,5 ; page_pal
|
||
LD HL,memBUFFER.Shared
|
||
LD DE,#0000 ;D - ELEMENTS,E - COLOR
|
||
LD B,def_pal_mask
|
||
CALL PIC_SET_PAL
|
||
|
||
LD A,7 ; page_pal
|
||
LD HL,memBUFFER.Shared
|
||
LD DE,#8000 ;D - ELEMENTS,E - COLOR
|
||
LD B,def_pal_mask
|
||
CALL PIC_SET_PAL
|
||
;
|
||
|
||
SETPAL4:
|
||
LD HL,COLORS.CGA.PALETTE
|
||
LD DE,memBUFFER.Shared
|
||
LD C,#08
|
||
|
||
DCR0: LD B,COLORS.CGA.PALETTE.ColNum
|
||
PUSH HL
|
||
;
|
||
DCR1: POP HL
|
||
PUSH HL
|
||
PUSH BC
|
||
LDI
|
||
LDI
|
||
LDI
|
||
LDI
|
||
POP BC
|
||
DJNZ DCR1
|
||
;
|
||
INC SP
|
||
INC SP
|
||
DEC C
|
||
JR NZ,DCR0
|
||
|
||
LD HL,memBUFFER.Shared
|
||
LD BC,512
|
||
LDIR
|
||
RET
|
||
|
||
SETPAL5:
|
||
LD HL,COLORS.CGA.PALETTE
|
||
LD DE,memBUFFER.Shared
|
||
LD B,#08
|
||
DCR01:
|
||
PUSH BC
|
||
PUSH HL
|
||
LD BC,16*4
|
||
LDIR
|
||
POP HL
|
||
POP BC
|
||
DJNZ DCR01
|
||
LD HL,memBUFFER.Shared
|
||
LD BC,512
|
||
LDIR
|
||
RET
|
||
|
||
include 'shared_includes/constants/standart_colors.inc'
|
||
; |