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 ; начало картинки в банке ПЗУ ; CALL DECODE CALL LOGO_TO_SCREEN ; ;--------------[Пасхалка]--------------[] 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' ;