2
0
Fork 0
original-tara/src/tara/mouse.asm

727 lines
9.6 KiB
NASM
Raw Permalink Normal View History

2018-11-22 21:14:43 +00:00
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