def_pal_mask EQU #FF PIC_SET_PAL_FF EQU def_pal_mask*256+BIOS.PIC_SET_PAL ;; ScreenPOS: .SUBNAME: CALL LP_GET_PLACE LD E,.SUBNAME.POS ;!HARDCODE autodetected hdd/cdrom info JP LP_SET_PLACE .SUBNAME.POS EQU 37 ; .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 LP_SET_PLACE LD A,(ElementsBuffer.UpLeft) LD H,E CALL PRSYM LD A,(ElementsBuffer.HorizontalLine) .BHOR+1: LD B,1 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 LP_SET_PLACE LD A,(ElementsBuffer.VerticalLine) CALL PRSYM LD A,H .BSHI+1: ADD A,#00 LD E,A CALL LP_SET_PLACE LD A,(ElementsBuffer.VerticalLine) CALL PRSYM POP BC LD E,H INC D DJNZ .loop CALL LP_SET_PLACE LD A,(ElementsBuffer.DownLeft) CALL PRSYM LD A,(ElementsBuffer.HorizontalLine) .BHOR2+1: LD B,1 CALL LP_PRINT_SYM LD A,(ElementsBuffer.DownRight) CALL PRSYM RET PRSYM: LD B,1 JP LP_PRINT_SYM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; //////////////////// LOGO \\\\\\\\\\\\\\\\\\\\ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOGOTYPE: CALL SHOW_LOGO LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay CALL G_VALUE OR A JR Z,.EASYDLY ; Delay average DEC A JR Z,.SKIPDLY ; Delay disabled ; Delay enabled LD B,LOGO_DELAY_NORM .loop EI push bc HALT CALL go_setup pop bc DJNZ .loop ; Delay average .SKIPDLY: LD B,LOGO_DELAY_MAX .MMA: PUSH BC EI HALT DI CALL FADE POP BC DJNZ .MMA ; ; .ERASE_LOGO: LD IX,win_descriptor.tab80x32 LD HL,#0000 LD E,1 ; EI HALT DI CALL WIN_OPEN ; LD DE,0 LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE LD B,7 JP LP_CLS_WIN ; Delay disabled .EASYDLY: LD B,LOGO_DELAY_MIN .loop2: EI HALT DJNZ .loop2 DI JR .ERASE_LOGO ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SHOW_LOGO: LD IX,win_descriptor.tab320x256 LD HL,#0000 LD E,1 CALL WIN_OPEN SAFE_PORTY DI LD A,CNF_PORT.EXTENSION OUT (CNF_PORT.vZX_ROM),A LD BC,#1FFD LD A,#10 ;!HARDCODE LD HL,MAIN_LOGO.Pallete LD DE,memBUFFER.Shared LD BC,MAIN_LOGO.Pallete.length LDIR XOR A OUT (CNF_PORT.vBIOS),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,CNF_PORT.EXTENSION OUT (CNF_PORT.vZX_ROM),A LD HL,MAIN_LOGO.Raster ; начало картинки в банке ПЗУ ; CALL DECODE CALL LOGO_TO_SCREEN XOR A OUT (CNF_PORT.vBIOS),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 ENTER_SETUP .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 JP NZ,.loop POP BC LD A,B OUT (SLOT1),A LD A,C OUT (PORT_Y),A XOR A RET 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' ;