mirror of
https://github.com/Tolik-Trek/Crazy-Blaster.git
synced 2026-06-15 01:21:36 +03:00
783 lines
15 KiB
NASM
783 lines
15 KiB
NASM
LD HL,RESERVED_PAGES
|
||
LD DE,#4000 + RESERVED_PAGES_COPY
|
||
LD BC,RESERVED_PAGES.Size
|
||
LDIR
|
||
LD SP,#4000
|
||
LD A,SYS_FN_PAGE
|
||
OUT (SLOT0),A
|
||
JP INIT_SCREEN - #4000
|
||
;
|
||
.start_code EQU $
|
||
|
||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï íªà ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||
INIT_SCREEN: CALL FN_SYNC
|
||
;
|
||
LD IX,VideoModes.graf_mode320x256
|
||
LD E,%00010001
|
||
CALL WIN_OPEN
|
||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï ¯ «¨âàë ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||
INIT_PALETTE: ;IN A,(SLOT1)
|
||
;PUSH AF
|
||
LD B,#FF
|
||
LD HL,PICTURE.bdPallete ;#8FBC ;!HARDCODE PICTURE.bdPallete
|
||
LD DE,0
|
||
LD A,1
|
||
CALL SET_PALETTE
|
||
CALL SET_PICTURE
|
||
CALL SET_BOARD_NUMBER
|
||
; Ž¯à¥¤¥«¥¨¥ 稯 <20>‡“
|
||
CALL DETECT_ROM
|
||
;
|
||
|
||
; ãáâ ®¢ª ॣ¨áâ஢
|
||
|
||
; ¯à릮ª â®çªã ¢å®¤ ¢® ä«¥è¥à¥
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
SET_BOARD_NUMBER:
|
||
IN A,(SLOT3)
|
||
EX AF,AF'
|
||
LD A,#18 ;!HARDCODE
|
||
OUT (SLOT3),A
|
||
;
|
||
LD HL,(BOARD_ID_DATA.Start)
|
||
LD (BoardNumOffsets.Start),HL
|
||
LD HL,(BOARD_ID_DATA.Number)
|
||
LD (BoardNumOffsets.Number),HL
|
||
LD HL,(BOARD_ID_DATA.End)
|
||
LD (BoardNumOffsets.End),HL
|
||
LD A,(BOARD_ID_DATA.Type)
|
||
LD (BoardNumOffsets.Type),A
|
||
;
|
||
LD A,#10 ;!HARDCODE
|
||
OUT (SLOT3),A
|
||
LD A,(FOR_ACEX)
|
||
LD (#C000 + expBIOS_Vars.msgStrings.str_ACEX_MODEL),A
|
||
LD (#C000 + expBIOS_Vars.msgRusStrings.str_ACEX_MODEL),A
|
||
;
|
||
EX AF,AF'
|
||
OUT (SLOT3),A
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
DISP_WINDOW EQU $
|
||
DISP #4000 + DISP_WINDOW
|
||
DETECT_ROM: LD HL,0
|
||
ADD HL,SP
|
||
LD SP,#4000
|
||
LD (.sp_save),HL
|
||
;
|
||
CALL TEST_ROM_CHIP ;!HARDCODE TEST_ROM_CHIP #8E59
|
||
LD (TST_R.jp),BC ;!HARDCODE TST_R.jp #81D5
|
||
;
|
||
.sp_save+1: LD SP,0000
|
||
XOR A
|
||
OUT (SYS_PORT.RAM),A
|
||
RET
|
||
ENT
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
SET_PICTURE: LD A,#FF - MAIN_PICTURE.PIC_Y
|
||
.loop_pic: PUSH AF
|
||
|
||
LD A,#50
|
||
OUT (SLOT1),A
|
||
|
||
POP AF
|
||
OUT (PORT_Y),A
|
||
|
||
LD HL,.pic_buffer
|
||
LD DE,#4000 + Screen_Offset + MAIN_PICTURE.PIC_X
|
||
;
|
||
LD BC,MAIN_PICTURE.PIC_WIDTH
|
||
LDIR
|
||
;
|
||
LD H,A
|
||
POP AF
|
||
OUT (SLOT1),A
|
||
PUSH AF
|
||
|
||
LD A,H
|
||
DEC A
|
||
CP MAIN_PICTURE.PIC_Y-1
|
||
JR NZ,.loop_pic
|
||
|
||
POP AF
|
||
OUT (SLOT1),A
|
||
IM 1
|
||
EI
|
||
RET
|
||
.pic_buffer: BLOCK MAIN_PICTURE.PIC_WIDTH,0
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
; “áâ ®¢ª ०¨¬ «¨¨¨
|
||
LP_MODE_LINE: BIT 0,(IX+Window_Variables.USER.MODE_S)
|
||
JP NZ,LP_MODE_LINE2 ; ¨¤â¨ ᯥªâàã¬
|
||
BIT 4,A
|
||
JP Z,LP_MODE_LINE3 ; ¨¤â¨ £à 䨪ã!
|
||
DEC D
|
||
; ⥪áâ®¢ë© à¥¦¨¬.
|
||
EX AF,AF'
|
||
LD A,#50
|
||
OUT (SLOT3),A
|
||
LD A,L ; ¢¥à⨪ «ì®¥ ¯®«®¦¥¨¥
|
||
CP #80
|
||
JR NC,LP_EXIT_MODE
|
||
;
|
||
LP_MODE_RECURSE:
|
||
LD A,D ; £®à¨§®â «ì®¥ ¯®«®¦¥¨¥
|
||
AND 7FH
|
||
SUB 80
|
||
JR C,LP_MODE_LL
|
||
SUB 48
|
||
NEG
|
||
;
|
||
LD E,A ; § ¯®¬¨âì
|
||
ADD A,D
|
||
LD D,A ; ®¢®¥ ¯®«®¦¥¨¥
|
||
;
|
||
LD A,E ; ¢®ááâ ®¢¨âì
|
||
RRA
|
||
AND 3FH
|
||
SUB C
|
||
JR NC,LP_EXIT_MODE
|
||
NEG
|
||
LD C,A ; ®¢®¥ § 票¥ C
|
||
JR LP_MODE_RECURSE
|
||
;
|
||
LP_MODE_LL: NEG
|
||
RRA
|
||
AND 3FH
|
||
CP C
|
||
JR NC,LP_MODE_LR
|
||
LD C,A
|
||
LP_MODE_LR: EX AF,AF'
|
||
INC D
|
||
LP_MD_LL1: EX AF,AF'
|
||
LD A,D
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD (HL),A ; ०¨¬
|
||
INC D
|
||
EX AF,AF'
|
||
LD A,D
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD (HL),A ; ०¨¬
|
||
INC D
|
||
DEC C
|
||
JR NZ,LP_MD_LL1
|
||
EX AF,AF'
|
||
LP_EXIT_MODE: LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
EX AF,AF'
|
||
RET
|
||
;
|
||
|
||
; “áâ ®¢ª ०¨¬ «¨¨¨
|
||
; Spectrum mode
|
||
LP_MODE_LINE2: LD A,(IX+Window_Variables.WORK_2)
|
||
LD B,(IX+Window_Variables.WORK_1)
|
||
;
|
||
DEC D
|
||
;
|
||
EX AF,AF'
|
||
LD A,#50
|
||
OUT (SLOT3),A
|
||
LD A,L ; ¢¥à⨪ «ì®¥ ¯®«®¦¥¨¥
|
||
CP #80
|
||
JR NC,LP_EXIT_MODE2
|
||
;
|
||
LP_MODE_RECURSE2:
|
||
LD A,D ; £®à¨§®â «ì®¥ ¯®«®¦¥¨¥
|
||
AND #7F
|
||
SUB 80
|
||
JR C,LP_MODE_LL2
|
||
SUB 48
|
||
NEG
|
||
;
|
||
LD E,A ; § ¯®¬¨âì
|
||
ADD A,D
|
||
LD D,A ; ®¢®¥ ¯®«®¦¥¨¥
|
||
;
|
||
LD A,E ; ¢®ááâ ®¢¨âì
|
||
RRA
|
||
AND #3F
|
||
SUB C
|
||
JR NC,LP_EXIT_MODE2
|
||
NEG
|
||
LD C,A ; ®¢®¥ § 票¥ C
|
||
JR LP_MODE_RECURSE2
|
||
;
|
||
LP_MODE_LL2: NEG
|
||
RRA
|
||
AND #3F
|
||
CP C
|
||
JR NC,LP_MODE_LR2
|
||
LD C,A
|
||
LP_MODE_LR2: EX AF,AF'
|
||
INC D
|
||
LP_MD_LL2: EX AF,AF'
|
||
LD A,D
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD (HL),A ; ०¨¬
|
||
INC L
|
||
LD (HL),B
|
||
INC L
|
||
LD (HL),B
|
||
DEC L
|
||
DEC L
|
||
INC D
|
||
BIT 4,A
|
||
JR NZ,lp_md_ll3x
|
||
INC B
|
||
lp_md_ll3x: EX AF,AF'
|
||
LD A,D
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD (HL),A ; ०¨¬
|
||
INC L
|
||
LD (HL),B
|
||
INC L
|
||
LD (HL),B
|
||
DEC L
|
||
DEC L
|
||
INC D
|
||
INC B
|
||
JR NZ,LP_NO_ADD_40
|
||
ADD A,#40
|
||
LP_NO_ADD_40: DEC C
|
||
JR NZ,LP_MD_LL2
|
||
EX AF,AF'
|
||
LP_EXIT_MODE2: LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
EX AF,AF'
|
||
LD (IX+Window_Variables.WORK_1),B
|
||
LD (IX+Window_Variables.WORK_2),A
|
||
RET
|
||
;
|
||
; “áâ ®¢ª ०¨¬ «¨¨¨
|
||
LP_MODE_LINE3: ; Grafic Mode
|
||
LD A,(IX+Window_Variables.WORK_1)
|
||
LD B,(IX+Window_Variables.WORK_2)
|
||
DEC D
|
||
EX AF,AF'
|
||
LD A,#50
|
||
OUT (SLOT3),A
|
||
LD A,L ; ¢¥à⨪ «ì®¥ ¯®«®¦¥¨¥
|
||
CP #80
|
||
JR NC,LP_EXIT_MODE3
|
||
;
|
||
LP_MODE_RECURSE3:
|
||
LD A,D ; £®à¨§®â «ì®¥ ¯®«®¦¥¨¥
|
||
AND #7F
|
||
SUB 80
|
||
JR C,LP_MODE_LL3
|
||
SUB 48
|
||
NEG
|
||
LD E,A ; § ¯®¬¨âì
|
||
ADD A,D
|
||
LD D,A ; ®¢®¥ ¯®«®¦¥¨¥
|
||
LD A,E ; ¢®ááâ ®¢¨âì
|
||
RRA
|
||
AND #3F
|
||
SUB C
|
||
JR NC,LP_EXIT_MODE3
|
||
NEG
|
||
LD C,A ; ®¢®¥ § 票¥ C
|
||
JR LP_MODE_RECURSE3
|
||
;
|
||
LP_MODE_LL3: NEG
|
||
RRA
|
||
AND #3F
|
||
CP C
|
||
JR NC,LP_MODE_LR3
|
||
LD C,A
|
||
LP_MODE_LR3: EX AF,AF'
|
||
INC D
|
||
BIT 5,B
|
||
JR Z,LP_GR_640
|
||
;
|
||
LP_MD_LL3: EX AF,AF'
|
||
LD A,D
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD (HL),B ; ०¨¬
|
||
INC L
|
||
LD (HL),A ; ०¨¬ 2
|
||
INC L
|
||
LD (HL),0 ; ०¨¬ 2
|
||
DEC L
|
||
DEC L
|
||
INC D
|
||
INC D
|
||
INC A
|
||
LD E,A
|
||
AND 7
|
||
JR NZ,LP_NO_INC_B
|
||
LD A,E
|
||
SUB 8
|
||
LD E,A
|
||
INC B
|
||
LP_NO_INC_B: LD A,E
|
||
DEC C
|
||
JR NZ,LP_MD_LL3
|
||
;
|
||
LP_640_RET: EX AF,AF'
|
||
LP_EXIT_MODE3: LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
EX AF,AF'
|
||
LD A,(IX+Window_Variables.WORK_1)
|
||
ADD A,8
|
||
LD (IX+Window_Variables.WORK_1),A
|
||
RET
|
||
;
|
||
LP_GR_640: EX AF,AF'
|
||
LD A,D
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD (HL),B ; ०¨¬ 1
|
||
INC L
|
||
LD (HL),A ; ०¨¬ 2
|
||
INC L
|
||
LD (HL),0 ; ०¨¬ 3
|
||
INC D
|
||
EX AF,AF'
|
||
LD A,D
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD (HL),0 ; ०¨¬ 3
|
||
DEC L
|
||
LD (HL),A ; ०¨¬ 2
|
||
DEC L
|
||
LD (HL),B ; ०¨¬ 1
|
||
INC D
|
||
INC A
|
||
LD E,A
|
||
AND 7
|
||
JR NZ,LP_NO_INC_B6
|
||
LD A,E
|
||
SUB 8
|
||
LD E,A
|
||
INC B
|
||
LP_NO_INC_B6: LD A,E
|
||
DEC C
|
||
JR NZ,LP_GR_640
|
||
JP LP_640_RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
; ¢å®¤: HL - ¤ ë¥ ¯ «¨âàë RGB, E - ç «ìë© æ¢¥â
|
||
; D - ç¨á«® 梥⮢, B - PAL-mask, A - page PAL
|
||
SET_PALETTE: 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
|
||
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,(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
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
LP_OPEN_PG: IN A,(SLOT3)
|
||
LD C,A
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
;
|
||
LD A,C
|
||
LD (SYS_PAGE.COPY_SLOT3),A
|
||
IN A,(PORT_Y)
|
||
LD (SYS_PAGE.COPY_RGADR),A
|
||
RET
|
||
LP_CLOSE_PG: LD A,(SYS_PAGE.COPY_RGADR)
|
||
OUT (PORT_Y),A
|
||
LD A,(SYS_PAGE.COPY_SLOT3)
|
||
OUT (SLOT3),A
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
WIN_OPEN: CALL LP_OPEN_PG
|
||
LD (SYS_PAGE.WIN_MAP_SC),IX ; ª àâ ®ª
|
||
PUSH DE
|
||
LD HL,(SYS_PAGE.WIN_MAP_SC)
|
||
LD DE,WIN_ID_0
|
||
LD BC,Window_UserVars
|
||
LDIR
|
||
LD IX,WIN_ID_0
|
||
POP DE
|
||
LD L,(IX+Window_Variables.USER.PLACE_H)
|
||
LD H,(IX+Window_Variables.USER.PLACE_V)
|
||
LD (IX+Window_Variables.MODE_E),E
|
||
;
|
||
LD A,L
|
||
ADD A,A
|
||
INC A ; ¢ëç¨á«¥¨¥ PORT_Y
|
||
BIT 4,E
|
||
JR NZ,.LP_SET_NO_OR
|
||
OR #80 ; ¥á«¨ ¢ë¢®¤ ¢â®à®© íªà
|
||
.LP_SET_NO_OR: LD (IX+Window_Variables.H_BEG),A
|
||
LD D,A
|
||
LD A,(IX+Window_Variables.USER.SIZE_H)
|
||
ADD A,A
|
||
ADD A,D
|
||
LD (IX+Window_Variables.H_END),A
|
||
LD (SYS_PAGE.WIN_MODE_SC),DE ; ¬¥áâ® ¯® £®à¨§®â «¨ ¨ áâà ¨æ ¬®¤ë
|
||
LD A,H
|
||
AND #3F
|
||
ADD A,A
|
||
ADD A,A
|
||
LD L,A
|
||
LD H,#C3
|
||
LD (SYS_PAGE.WIN_MODE_SH),HL ; ¬¥áâ® ¯® ¢¥à⨪ «¨ á ¤à¥á®¬
|
||
LD (IX+Window_Variables.V_BEG),A
|
||
LD A,(IX+Window_Variables.USER.SIZE_V)
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,L
|
||
LD (IX+Window_Variables.V_END),A
|
||
;
|
||
LD L,(IX+Window_Variables.V_BEG)
|
||
LD H,#C3
|
||
LD B,(IX+Window_Variables.USER.SIZE_V) ; à §¬¥à ¯® ¢¥à⨪ «¨
|
||
;
|
||
LD (IX+Window_Variables.WORK_1),0
|
||
LD A,(IX+Window_Variables.USER.MODE) ; § ª®£¥¥à â®à ¯«îá ०¨¬
|
||
LD (IX+Window_Variables.WORK_2),A
|
||
BIT 4,A
|
||
JR NZ,.LOOP ; ¯¥à¥å®¤, ¥á«¨ ⥪áâ®¢ë© à¥¦¨¬
|
||
;
|
||
AND #F0
|
||
LD C,A
|
||
LD A,(IX+Window_Variables.USER.GR_X)
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
LD D,A
|
||
AND #0F
|
||
OR C
|
||
LD (IX+Window_Variables.WORK_2),A
|
||
;
|
||
LD A,D
|
||
AND #E0
|
||
LD C,A
|
||
LD A,(IX+Window_Variables.USER.GR_Y)
|
||
AND #1F
|
||
OR C
|
||
RLCA
|
||
RLCA
|
||
RLCA
|
||
LD (IX+Window_Variables.WORK_1),A
|
||
;
|
||
.LOOP: LD D,(IX+Window_Variables.H_BEG) ; D - ç «® áâப¨ (PORT_Y)
|
||
LD C,(IX+Window_Variables.USER.SIZE_H) ; à §¬¥à ¯® £®à¨§®â «¨
|
||
LD A,(IX+Window_Variables.USER.MODE) ; § ª®£¥¥à â®à ¯«îá ०¨¬
|
||
;
|
||
PUSH BC
|
||
CALL LP_MODE_LINE
|
||
POP BC
|
||
INC L
|
||
INC L
|
||
INC L
|
||
INC L
|
||
DJNZ .LOOP
|
||
;
|
||
LD A,(IX+Window_Variables.MODE_E)
|
||
AND 1
|
||
OUT (RGMOD),A
|
||
CALL LP_CLOSE_PG
|
||
CALL LP_INI_P
|
||
CALL LP_SIZE
|
||
XOR A
|
||
RET
|
||
;
|
||
LP_INI_P: EX AF,AF'
|
||
EXX
|
||
CALL LP_OPEN_PG
|
||
; ®âªàë⨥ £à ä¨ç¥áª®£® íªà
|
||
; LP_INI_NO_ZG:
|
||
LD A,(WIN_ID_0.H_BEG)
|
||
LD D,A
|
||
LD A,(WIN_ID_0.V_BEG)
|
||
LD L,A
|
||
INC L
|
||
LD H,#C3
|
||
|
||
AND A
|
||
LD A,(WIN_ID_0.USER.MODE)
|
||
BIT 5,A
|
||
LD A,(WIN_ID_0.USER.SIZE_H)
|
||
JR NZ,LP_INI_40
|
||
ADD A,A
|
||
SCF
|
||
;!TODO çâ®-â® âãâ ¯®¤¢ë¯¨«¥®
|
||
LP_INI_40: LD B,A
|
||
LD (WIN_ID_0.SIZE_REL),A
|
||
EX AF,AF'
|
||
EXX
|
||
JP LP_END_P
|
||
;
|
||
; WIN_MAP_SC - ª àâ íªà
|
||
; 0 - hor size
|
||
; 1 - ver size
|
||
; 2 - hor place
|
||
; 3 - ver place
|
||
LP_SIZE: ; ®¯à¥¤¥«¥¨¥ size
|
||
CALL LP_OPEN_PG
|
||
LD DE,(WIN_ID_0.USER.SIZE_H)
|
||
LD A,(WIN_ID_0.USER.MODE)
|
||
BIT 5,A
|
||
CALL LP_CLOSE_PG
|
||
RET NZ
|
||
LD A,E
|
||
ADD A,A
|
||
LD E,A
|
||
RET
|
||
;
|
||
LP_END_P: LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
.SYS_PAGE: EX AF,AF'
|
||
EXX
|
||
RLA
|
||
LD E,A
|
||
LD (WIN_ID_0.reg_HL),HL ; ¬¥áâ® ¯¥ç â¨
|
||
LD (WIN_ID_0.reg_DE),DE
|
||
LD (WIN_ID_0.reg_BC),BC
|
||
CALL LP_CLOSE_PG
|
||
EXX
|
||
EX AF,AF'
|
||
AND A
|
||
RET
|
||
.short: EX AF,AF'
|
||
EXX
|
||
CALL LP_CLOSE_PG
|
||
EXX
|
||
EX AF,AF'
|
||
AND A
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
FN_SYNC: LD A,Port_VSYNC.SET_320L
|
||
OUT (Port_VSYNC),A
|
||
LD C,SLOT3
|
||
IN B,(C)
|
||
LD A,SYS_PAGE
|
||
OUT (C),A
|
||
LD A,(SYS_PAGE.VSyncAndWaits)
|
||
OR 1
|
||
LD (SYS_PAGE.VSyncAndWaits),A
|
||
;
|
||
.INT_DEF: LD DE,(SYS_PAGE.CONFIG_ALL)
|
||
OUT (C),B
|
||
LD IX,SCREEN_TABLES.PENTAGON
|
||
IN A,(SLOT3)
|
||
EX AF,AF'
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
EX AF,AF'
|
||
LD (SYS_PAGE.COPY_SLOT3),A
|
||
IN A,(PORT_Y)
|
||
LD (SYS_PAGE.COPY_RGADR),A
|
||
LD (SYS_PAGE.CONFIG_ALL),IX
|
||
XOR A
|
||
;----[START]-----------------------[? 1]
|
||
.loop_1: OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
LD A,#50
|
||
OUT (SLOT3),A
|
||
LD HL,#C300
|
||
;----[START]------------------[v 2]-----
|
||
.loop_2: LD C,(IX)
|
||
;----[START]-------------[v 3]----------
|
||
.loop_3: ; ¢§ïâì ¤à¥á ¤ ëå ¤«ï § ¯¨á¨ ¢ á«ã¦¥¡ãî ®¡« áâì íªà
|
||
LD E,(IX+1) ; take adress of line X
|
||
LD D,(IX+2)
|
||
;----[START]--------[v 4]---------------
|
||
.loop_4:
|
||
LD A,(DE) ; take counter in table 1, line X, column Y
|
||
INC DE
|
||
AND A
|
||
JR Z,.loop_4_exit ; exit if zero-counter
|
||
LD B,A
|
||
LD A,(DE)
|
||
INC DE
|
||
;----[START]---[v 5]--------------------
|
||
.loop_5:
|
||
LD (HL),A
|
||
INC L
|
||
LD (HL),0
|
||
INC L
|
||
LD (HL),0
|
||
;
|
||
EX AF,AF'
|
||
INC A
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
;
|
||
LD (HL),0
|
||
DEC L
|
||
LD (HL),0
|
||
DEC L
|
||
LD (HL),A
|
||
;
|
||
EX AF,AF'
|
||
INC A
|
||
OUT (PORT_Y),A
|
||
EX AF,AF'
|
||
DJNZ .loop_5
|
||
;--------------[^ 5]--------------------
|
||
JR .loop_4
|
||
;-------------------[^ 4]---------------
|
||
.loop_4_exit: INC HL ; next line
|
||
INC HL
|
||
INC HL
|
||
INC HL
|
||
IN A,(PORT_Y)
|
||
AND #80
|
||
OUT (PORT_Y),A
|
||
DEC C
|
||
JR NZ,.loop_3
|
||
;------------------------[^ 3]----------
|
||
INC IX ; next counter
|
||
INC IX
|
||
INC IX
|
||
LD A,(IX)
|
||
AND A
|
||
JR NZ,.loop_2
|
||
;-----------------------------[^ 2]-----
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
LD IX,(SYS_PAGE.CONFIG_ALL)
|
||
|
||
EX AF,AF'
|
||
ADD A,#80
|
||
JR NC,.loop_1
|
||
;----------------------------------[^ 1]
|
||
; Exit
|
||
LD A,(SYS_PAGE.COPY_RGADR)
|
||
OUT (PORT_Y),A
|
||
LD A,(SYS_PAGE.COPY_SLOT3)
|
||
OUT (SLOT3),A
|
||
.exit: OR A
|
||
RET
|
||
;--- Screen data table 1: counter1, data1 .. counterX, dataX
|
||
SCREEN_TABLES:; | ç¨á«® | § 票ï |
|
||
; | áâப | ¢ |
|
||
; | /2 | áâப å |
|
||
.SCR: DB 41 , #F8
|
||
DB 3 , #FC
|
||
DB 4 , #FC
|
||
DB 7 , #FC
|
||
DB 9 , #F8
|
||
DB 0
|
||
.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0
|
||
.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0
|
||
.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0
|
||
.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0
|
||
;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX
|
||
;
|
||
; | ª®«-¢® | § 票ï |
|
||
; | áâப | ¢ |
|
||
; | | áâப¥ |
|
||
.PENTAGON: DB 33 : DW .SCR
|
||
DB 1 : DW .INT ; DW .BLN
|
||
DB 3 : DW .SNC
|
||
DB 1 : DW .BLN
|
||
DB 1 : DW .SCR
|
||
DB 1 : DW .RES
|
||
DB 0 ; end
|
||
|
||
;---
|
||
VideoModes:
|
||
.text_mode80x32:
|
||
DB 40
|
||
DB 32
|
||
DB 0
|
||
DB 0
|
||
DB %00011011
|
||
DB 0
|
||
DB 0
|
||
DB 0
|
||
.graf_mode320x256:
|
||
DB 80
|
||
DB 32
|
||
DB 0
|
||
DB 0
|
||
DB %01100000
|
||
DB 0
|
||
DB 0
|
||
DB 0
|
||
;---------------------------------------------------------------------;
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
RESERVED_PAGES_COPY: BLOCK RESERVED_PAGES.Size,#FF
|
||
.SYS_FN EQU RESERVED_PAGES.SYS_FN - RESERVED_PAGES
|
||
.BIOS EQU RESERVED_PAGES.BIOS - RESERVED_PAGES
|
||
.PICTURE EQU RESERVED_PAGES.PICTURE - RESERVED_PAGES
|
||
.FLASHER_RAM EQU RESERVED_PAGES.FLASHER_RAM - RESERVED_PAGES
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
;-----------------------------------------------------------------------;
|
||
BYTE "ACEX 1K"
|
||
FOR_ACEX: DB "0" + TYPE_OF_ACEX
|
||
BYTE "0"
|
||
|
||
BYTE "FULL BOARD ID:"
|
||
BOARD_ID_DATA:
|
||
.Start: DW #5283
|
||
.Number: DW 0 ; ¢ë¢®¤¨âáï ª ª 5 ¤¥áïâ¨çëå æ¨äà: 0..99999 ¨«¨ #0000..#270F
|
||
.End: DW #47E8
|
||
.Type: DB 0
|
||
BYTE "--<=END=>--"
|
||
;-----------------------------------------------------------------------; |