CHK_MAIN_LEFT: .db 0,0,24*8,13*16 .dw CHK_LEMOUSE_SCR .db 192,7,255,64+7 .dw CHK_LEMOUSE_RAD .db 24*8,7*16,255,212 .dw CHK_LEMOUSE_MENU CHK_MAIN_RIGHT: .db 0,0,24*8,13*16 .dw CHK_RIMOUSE_SCR .db 192,7,255,64+7 .dw CHK_RIMOUSE_RAD .db 24*8,7*16,255,212 .dw CHK_RIMOUSE_MENU CHK_MOUSE_LEFT: LD DE,(MOUSEY) LD HL,#CHK_MAIN_LEFT LD B,#3 JP CHK_BUTTON CHK_MOUSE_RIGHT: LD DE,(MOUSEY) LD HL,#CHK_MAIN_RIGHT LD B,#3 JP CHK_BUTTON ;=;;=;;======================================================== CHK_LEMOUSE_SCR: LD HL,(ADR) INC HL ;2VELD LAYER INC HL ;2TNK LAYER LD A,E ; E=Y SRL A SRL A SRL A LD B,A AND #0xFE ADD H LD H,A LD A,D SRL A LD C,A AND #0x7C LD E,A LD D,#0 ADD HL,DE LD A,(HL) OR A JR NZ,CHK_LEMOUSE_TNK ; TOT HIER IS HET GOED !!! ;LD A,(SECECTED_ITEM) ;OR A ;JP Z,CHK_MMSEL SRL B LD A,(VIEW_Y) ADD A,B LD E,A SRL C SRL C LD A,(VIEW_X) SLA A ADD A,C LD D,A LD B,#64 LD IY,#MSEL_COR_TAB LD HL,#SECECTED_ITEM CHK_LEMOUSE_MOVE_LP: DEC B LD A,B OR A RET Z LD A,(HL) INC HL OR A JR Z,CHK_LEMOUSE_MOVE_LP EXX CALL A_TO_IX EXX LD A,D ADD 0(IY) LD 2(IX),A LD A,E ADD 1(IY) LD 3(IX),A ; MOVE TANK INC IY INC IY JR CHK_LEMOUSE_MOVE_LP ;========== CHK_LEMOUSE_TNK: LD C,A LD A,(KEYS_TAB+6); CHK OP SHIFT LD B,#64 LD HL,#SECECTED_ITEM-1 BIT 0,A JR NZ,CHK_LEMOUSE_TNK_SEL LD A,C AND #0b11000000 RET NZ ; GEEN EIGEN COLOR CHK_LEMOUSE_TNK_LP: INC HL DEC B ; MET SHIFT LD A,B OR A RET Z ; GEEN PLEK IN DE TAB LD A,(HL) CP C JR Z,CHK_LEMOUSE_TNK_DIMUL ; DIT BEN IK ZELF OR A JR NZ,CHK_LEMOUSE_TNK_LP LD (HL),C JR CHK_LEMOUSE_TNK_MUL ; FOUND MYSELF A PLACE ; MET SHIFT OFTEWIJL MUTILBLE CHK_LEMOUSE_TNK_SEL: LD A,C ; NIEUWE TNK AND #0b11000000 JP NZ,CHK_LEMOUSE_TNK_ATT CHK_LEMOUSE_TNK_SEL_LP: DEC B LD A,B OR A JR Z,CHK_LEMOUSE_TNK_SEL_END ; LEEG LD A,(HL) LD (HL),#0 INC HL OR A JR Z,CHK_LEMOUSE_TNK_SEL_LP EXX CALL A_TO_IX EXX RES 0,9(IX) ; DESELTED ALL TANKS JR CHK_LEMOUSE_TNK_SEL CHK_LEMOUSE_TNK_SEL_END: LD A,C LD (SECECTED_ITEM),A ; NIEUWE TANK !! CHK_LEMOUSE_TNK_MUL: LD A,C CALL A_TO_IX SET 0,9(IX) LD HL,#MOVE_SP CALL TYPE_SP0 LD A,#1 LD (CUR_TYPE_SP0),A CALL COLOR_WHITE EI HALT HALT HALT CALL COLOR_BLACK RET ;--- CHK_LEMOUSE_TNK_ATT: DEC B LD A,B OR A RET Z LD A,(HL) INC HL OR A JR Z,CHK_LEMOUSE_TNK_ATT EXX CALL A_TO_IX EXX LD 8(IX),C ; QUAKE NR ( DE LUL ) SET 7,9(IX) ; ATT ALL TANKS JR CHK_LEMOUSE_TNK_SEL CHK_LEMOUSE_TNK_DIMUL: ; TANKS DESELSECTEN MET SHIFT EXX CALL A_TO_IX EXX BIT 0,9(IX) RET Z LD (HL),#0 RES 0,9(IX) RET MSEL_START_COR: .db 0,0 CHK_MMSEL: LD DE,(MOUSEY) LD (MSEL_START_COR),DE RET NOP ; SECECTED_ITEM: .ds 64 ; MSEL LIJN CHK_LEMOUSE_RAD: LD HL,#0x4000 LD A,D ; X SUB #192 CP #51 JR C,CHK_LEMOUSE_RAD_X LD A,#51 ;52 CHK_LEMOUSE_RAD_X: LD D,A LD (VIEW_X),A LD B,#0 SLA A SLA A SLA A RL B LD C,A ADD HL,BC LD A,D ADD A,#192 LD B,A LD A,E SUB #7 CP #64-14 JR C,CHK_LEMOUSE_RAD_Y LD A,#64-14 CHK_LEMOUSE_RAD_Y: LD (VIEW_Y),A LD D,A SLA D LD E,#0 ADD HL,DE LD (ADR),HL ADD A,#8 LD C,A JP PUTSPRITE1 CHK_LEMOUSE_MENU: LD A,(FIRE_BUTTONS) BIT 5,A RET NZ JP EXIT_DOME CHK_RIMOUSE_SCR: XOR A LD (CUR_TYPE_SP0),A LD (MSEL_START_COR),A LD (MSEL_START_COR+1),A LD HL,#CURSOR_SP CALL TYPE_SP0 LD B,#64 LD HL,#SECECTED_ITEM CHK_RIMOUSE_SCR_LP: DEC B LD A,B OR A RET Z LD A,(HL) LD (HL),#0 INC HL OR A JR Z,CHK_RIMOUSE_SCR_LP EXX CALL A_TO_IX EXX RES 0,9(IX) JR CHK_RIMOUSE_SCR_LP CHK_RIMOUSE_RAD: JP A0 CHK_RIMOUSE_MENU: RET ;=============================================================================== CHK_XY: LD A,#255 EX AF,AF LD A,#255 ; MOET SNELLER ( XAND A )?? SCRL: LD DE,(MOUSEY) LD A,E CP #202 JP NC,SCRL_D CP #2 JP C,SCRL_U LD A,D CP #246 JR NC,SCRL_R CP #2 JP C,SCRL_L LD A,(KEYS_TAB+8) BIT 7,A JR Z,SCRL_R BIT 6,A JP Z,SCRL_D BIT 5,A JP Z,SCRL_U BIT 4,A JR Z,SCRL_L SCRL_RET: EX AF,AF OR A RET NZ LD A,(CUR_TYPE_SP0) LD HL,#CURSOR_SP OR A JP Z,TYPE_SP0 LD HL,#MOVE_SP CP #1 JP Z,TYPE_SP0 CALL COLOR_WHITE HALT HALT HALT HALT HALT HALT HALT HALT RET SCRL_R: LD A,(VIEW_X) CP #52 JR Z,SCRL_RET INC A LD (VIEW_X),A ADD A,#192 LD B,A LD A,(VIEW_Y) ADD A,#8 LD C,A CALL PUTSPRITE1 LD HL,#RIGHT_SP CALL TYPE_SP0 LD HL,#0 LD (MSEL_START_COR),HL LD HL,(ADR) LD B,#0 LD C,#8 ADD HL,BC LD (ADR),HL CALL BUILD XOR A EX AF,AF JP SCRL SCRL_L: LD A,(VIEW_X) CP #1 JP Z,SCRL_RET DEC A LD (VIEW_X),A ADD A,#192 LD B,A LD A,(VIEW_Y) ADD A,#8 LD C,A CALL PUTSPRITE1 LD HL,#LEFT_SP CALL TYPE_SP0 LD HL,#0 LD (MSEL_START_COR),HL LD HL,(ADR) LD B,#0 LD C,#8 XOR A SBC HL,BC LD (ADR),HL CALL BUILD XOR A EX AF,AF JP SCRL SCRL_D: LD A,(VIEW_Y) CP #63-13 ;??? JP Z,SCRL_RET INC A LD (VIEW_Y),A ADD A,#8 LD C,A LD A,(VIEW_X) ADD A,#192 LD B,A CALL PUTSPRITE1 LD HL,#DOWN_SP CALL TYPE_SP0 LD HL,#0 LD (MSEL_START_COR),HL LD HL,(ADR) INC H INC H LD (ADR),HL CALL BUILD XOR A EX AF,AF JP SCRL SCRL_U: LD A,(VIEW_Y) CP #1 ;??? JP Z,SCRL_RET DEC A LD (VIEW_Y),A ADD A,#8 LD C,A LD A,(VIEW_X) ADD A,#192 LD B,A CALL PUTSPRITE1 LD HL,#UP_SP CALL TYPE_SP0 LD HL,#0 LD (MSEL_START_COR),HL LD HL,(ADR) DEC H DEC H LD (ADR),HL CALL BUILD XOR A EX AF,AF JP SCRL FIRE_BUTTONS: .db 0 EXIT_STACK: .dw 0 MSX_TYPE: .db 0 CUR_TYPE_SP0: .db 0 INT_DOME: .dw I_INTERRUPT INT_DOS: .dw 0 ; DEZE WORDT INGEVULD MOUSE_OFF: .db 0 MOUSE_USE: .db 0 MOUSE_PORT: .db 0 MOUSE_WAIT1: .db 0 MOUSE_WAIT2: .db 0 MOUSEY: .db 40 ; Raad eens ! MOUSEX: .db 40 ; X coor. van cursor/muis VIEW_X: .db 0 VIEW_Y: .db 0 CURSOR_SP: .db 0b11111111,0,0,0 ; MAX 32 * 32 PUNTJES .db 0b10000001,0,0,0 .db 0b10000010,0,0,0 .db 0b10000100,0,0,0 .db 0b10001000,0,0,0 .db 0b10010000,0,0,0 .db 0b10100000,0,0,0 .db 0b11000000,0,0,0 LEFT_SP: .db 0b00010000,0,0,0 .db 0b00110000,0,0,0 .db 0b01110000,0,0,0 .db 0b11111111,0,0,0 .db 0b11111111,0,0,0 .db 0b01110000,0,0,0 .db 0b00110000,0,0,0 .db 0b00010000,0,0,0 RIGHT_SP: .db 0b00001000,0,0,0 .db 0b00001100,0,0,0 .db 0b00001110,0,0,0 .db 0b11111111,0,0,0 .db 0b11111111,0,0,0 .db 0b00001110,0,0,0 .db 0b00001100,0,0,0 .db 0b00001000,0,0,0 UP_SP: .db 0b00011000,0,0,0 .db 0b00111100,0,0,0 .db 0b01111110,0,0,0 .db 0b11111111,0,0,0 .db 0b00011000,0,0,0 .db 0b00011000,0,0,0 .db 0b00011000,0,0,0 .db 0b00011000,0,0,0 DOWN_SP: .db 0b00011000,0,0,0 .db 0b00011000,0,0,0 .db 0b00011000,0,0,0 .db 0b00011000,0,0,0 .db 0b11111111,0,0,0 .db 0b01111110,0,0,0 .db 0b00111100,0,0,0 .db 0b00011000,0,0,0 MOVE_SP: .db 0b00111100,0,0,0 .db 0b01000010,0,0,0 .db 0b10000001,0,0,0 .db 0b10011001,0,0,0 .db 0b10011001,0,0,0 .db 0b10000001,0,0,0 .db 0b01000010,0,0,0 .db 0b00111100,0,0,0 MSEL_COR_TAB: .db 0,0,1,0,0,1,1,1,2,0,2,1,0,2,1,2 .db 2,2,3,0,3,1,3,2,0,3,1,3,2,3,3,3 .db 4,0,4,1,4,2,4,3,0,4,1,4,2,4,3,4 .db 4,4,5,0,5,1,5,2,5,3,5,4,0,5,1,5 .db 2,5,3,5,4,5,5,5,6,0,6,1,6,2,6,3 .db 6,4,6,5,0,6,1,6,2,6,3,6,4,6,5,6 .db 6,6,7,0,7,1,7,2,7,3,7,4,7,5,7,6 .db 0,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7 .db 8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7 .db 0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8 RADAR_SP: .db 0b11111111,0b11111111,255,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 .db 0b10000000,0b00000000,1,0 ; MAX 32 * 32 PUNTJES .db 0b11111111,0b11111111,255,0 SP0_CMD: .db 36,17 ; REG 36 , 17 BYTES .dw 768 ; DX .dw 1023 ; DY .dw 32 ; NX .dw 1 ; NY .db 0,12 ; 0,OPRATIE .dw 0xFFFF ; COLOR MASK .db 0,0 ; COLOR .db 0,0 ; .db 16 ; OPCODE SP1_CMD: .db 36,17 ; REG 36 , 17 BYTES .dw 896 ; DX .dw 1023 ; DY .dw 52 ; NX .dw 1 ; NY .db 0,12 ; 0,OPRATIE .dw 0xFFFF ; COLOR MASK .db 0,0 ; COLOR .db 0,0 ; .db 16 ; OPCODE ; DIT IS CODE OM JE SCREERM MEE TE BEKIJKEN A0: IN A,(0x65) AND #64 JR NZ,A0 A1: IN A,(0x65) AND #64 JR Z,A1 LD A,#18 OUT (0x64),A LD A,#1 OUT (0x63),A XOR A OUT (0x63),A LD A,(SELECT-1) LD B,A AND #0xF0 LD C,A LD A,B SLA A SLA A SLA A AND #0x78 LD B,A INC C CALL PUTSPRITE1 EI HALT HALT HALT HALT CALL SELECT A2: IN A,(0x65) AND #64 JR NZ,A2 A3: IN A,(0x65) AND #64 JR Z,A3 LD A,#18 OUT (0x64),A XOR A OUT (0x63),A LD A,(PAGE) OUT (0x63),A LD A,(VIEW_Y) LD C,A LD A,(VIEW_X) ADD A,#192 LD B,A CALL PUTSPRITE1 EI HALT HALT HALT HALT HALT HALT LD A,#255 LD (FIRE_BUTTONS),A RET .db 0 SELECT: EI HALT LD A,(FIRE_BUTTONS) BIT 5,A RET Z BIT 4,A JR NZ,SELECT LD DE,(MOUSEY) ; E=Y LD A,D SRL A SRL A SRL A AND #0b00001111 LD B,A LD A,E AND #0xF0 OR B LD (SELECT-1),A LD A,D AND #0x78 ; DON'Y USE HISTET BIT X>256 LD B,A LD A,E AND #0xF0 LD C,A INC C CALL PUTSPRITE1 JR SELECT