.define EQU =

LZ4_SRC	EQU $00
LZ4_DST	EQU $02
LZ4_END	EQU $04
COUNT	EQU $06
DELTA	EQU $08

;; Zero page monitor routines addresses

;WNDLFT	EQU $20
;WNDWDTH	EQU $21
;WNDTOP	EQU $22
;WNDBTM	EQU $23
CH	EQU $24
CV	EQU $25
GBASL	EQU $26
GBASH	EQU $27
BASL	EQU $28
BASH	EQU $29
;H2	EQU $2C
V2	EQU $2D
MASK	EQU $2E
COLOR	EQU $30
;INVFLG	EQU $32



REGISTER_DUMP	EQU $50
A_FINE_TONE	EQU $50
A_COARSE_TONE	EQU $51
B_FINE_TONE	EQU $52
B_COARSE_TONE	EQU $53
C_FINE_TONE	EQU $54
C_COARSE_TONE	EQU $55
NOISE		EQU $56
ENABLE		EQU $57
A_VOLUME	EQU $58
B_VOLUME	EQU $59
C_VOLUME	EQU $5A
ENVELOPE_FINE	EQU $5B
ENVELOPE_COARSE	EQU $5C
ENVELOPE_SHAPE	EQU $5D
COPY_OFFSET	EQU $5E
DECODER_STATE	EQU $5F




;; Flying Routine Only

TURNING		EQU	$60
;SCREEN_X	EQU	$61		; not used?
SCREEN_Y	EQU	$62
ANGLE		EQU	$63
HORIZ_SCALE_I	EQU	$64
HORIZ_SCALE_F	EQU	$65
FACTOR_I	EQU	$66
FACTOR_F	EQU	$67
DX_I		EQU	$68
DX_F		EQU	$69
SPACEX_I	EQU	$6A
SPACEX_F	EQU	$6B
CX_I		EQU	$6C
CX_F		EQU	$6D
DY_I		EQU	$6E
DY_F		EQU	$6F
SPACEY_I	EQU	$70
SPACEY_F	EQU	$71
CY_I		EQU	$72
CY_F		EQU	$73
TEMP_I		EQU	$74
TEMP_F		EQU	$75
DISTANCE_I	EQU	$76
DISTANCE_F	EQU	$77
SPACEZ_I	EQU	$78
SPACEZ_F	EQU	$79
DRAW_SPLASH	EQU	$7A
SPEED		EQU	$7B
SPLASH_COUNT	EQU	$7C
OVER_LAND	EQU	$7D
NUM1L		EQU	$7E
NUM1H		EQU	$7F
NUM2L		EQU	$80
NUM2H		EQU	$81
RESULT		EQU	$82 ; 83,84,85
;NEGATE		EQU	$86			; UNUSED?
LAST_SPACEX_I	EQU	$87
LAST_SPACEY_I	EQU	$88
LAST_MAP_COLOR	EQU	$89
DRAW_SKY	EQU	$8A
COLOR_MASK	EQU	$8B
KEY_COUNT	EQU	$8C
KEY_OFFSET	EQU	$8D
DRAW_BLUE_SKY	EQU	$8E
RANDOM_POINTER	EQU	$8F
FRAME_COUNT	EQU	$90

MB_VALUE	EQU $91
DONE_PLAYING	EQU $92
MB_ADDRL	EQU $93
MB_ADDRH	EQU $94
MB_CHUNK_OFFSET	EQU $95
MB_DETECTED	EQU $96
WHICH_CHUNK	EQU $97
STATE		EQU $98

; More zero-page addresses
; we try not to conflict with anything DOS, MONITOR or BASIC related

COLOR1		EQU	$E0
COLOR2		EQU	$E1
MATCH		EQU	$E2
XX		EQU	$E3
YY		EQU	$E4

SHIPY           EQU     $E4

YADD		EQU	$E5
LOOP		EQU	$E6
MEMPTRL		EQU	$E7
MEMPTRH		EQU	$E8
NAMEL		EQU	$E9
NAMEH		EQU	$EA
NAMEX		EQU	$EB
CHAR		EQU	$EC
DISP_PAGE       EQU	$ED
DRAW_PAGE       EQU	$EE

FIRST		EQU	$F0
LASTKEY		EQU	$F1
PADDLE_STATUS	EQU	$F2
XPOS		EQU	$F3
YPOS		EQU	$F4
TEMP		EQU	$FA
RUN		EQU	$FA
TEMP2		EQU	$FB
TEMPY		EQU	$FB
INL		EQU	$FC
INH		EQU	$FD
OUTL		EQU	$FE
OUTH		EQU	$FF




KEYPRESS	EQU	$C000
KEYRESET	EQU	$C010

;; SOFT SWITCHES
CLR80COL	EQU	$C000	; PAGE0/PAGE1 normal
SET80COL	EQU	$C001	; PAGE0/PAGE1 switches PAGE0 in Aux instead
EIGHTYCOL	EQU	$C00D
SPEAKER		EQU	$C030
SET_GR		EQU	$C050
SET_TEXT	EQU	$C051
FULLGR		EQU	$C052
TEXTGR		EQU	$C053
PAGE0		EQU	$C054
PAGE1		EQU	$C055
LORES		EQU	$C056	; Enable LORES graphics
HIRES		EQU	$C057	; Enable HIRES graphics
AN3		EQU	$C05E	; Annunciator 3

PADDLE_BUTTON0	EQU	$C061
PADDL0		EQU	$C064
PTRIG		EQU	$C070

;; BASIC ROUTINES

NORMAL	EQU	$F273

;; MONITOR ROUTINES

HLINE	EQU $F819			;; HLINE Y,$2C at A
VLINE	EQU $F828			;; VLINE A,$2D at Y
CLRSCR	EQU $F832			;; Clear low-res screen
CLRTOP	EQU $F836			;; clear only top of low-res screen
SETCOL	EQU $F864			;; COLOR=A
TEXT	EQU $FB36
TABV	EQU $FB5B			;; VTAB to A
BASCALC	EQU $FBC1			;;
VTAB	EQU $FC22			;; VTAB to CV
HOME	EQU $FC58			;; Clear the text screen
WAIT	EQU $FCA8			;; delay 1/2(26+27A+5A^2) us
SETINV	EQU $FE80			;; INVERSE
SETNORM	EQU $FE84			;; NORMAL
COUT	EQU $FDED			;; output A to screen
COUT1	EQU $FDF0			;; output A to screen






COLOR_BLACK		EQU	0
COLOR_RED		EQU	1
COLOR_DARKBLUE		EQU	2
COLOR_PURPLE		EQU	3
COLOR_DARKGREEN		EQU	4
COLOR_GREY		EQU	5
COLOR_MEDIUMBLUE	EQU	6
COLOR_LIGHTBLUE		EQU	7
COLOR_BROWN		EQU	8
COLOR_ORANGE		EQU	9
COLOR_GREY2		EQU	10
COLOR_PINK		EQU	11
COLOR_LIGHTGREEN	EQU	12
COLOR_YELLOW		EQU	13
COLOR_AQUA		EQU	14
COLOR_WHITE		EQU	15

COLOR_BOTH_RED		EQU	$11
COLOR_BOTH_DARKBLUE	EQU	$22
COLOR_BOTH_DARKGREEN	EQU	$44
COLOR_BOTH_GREY		EQU	$55
COLOR_BOTH_MEDIUMBLUE	EQU	$66
COLOR_BOTH_LIGHTBLUE	EQU	$77
COLOR_BOTH_BROWN	EQU	$88
COLOR_BOTH_ORANGE	EQU	$99
COLOR_BOTH_PINK		EQU	$BB
COLOR_BOTH_LIGHTGREEN	EQU	$CC
COLOR_BOTH_YELLOW	EQU	$DD
COLOR_BOTH_AQUA		EQU	$EE
COLOR_BOTH_WHITE	EQU	$FF

AUX_BOTH_MEDIUMBLUE	EQU	$33	; 0011 0011
AUX_BOTH_GREY		EQU	$AA	; 1010 1010