;****************************************************************************
;
;	M5b Z-80 Banked Memory Monitor Global Definitions
;
;****************************************************************************
;
; Revision History:
;
; 1.00	11-22-90   grh
;	Initial separation from main module
;
;****************************************************************************
;
;============================================================================
;
;   ASSEMBLE TIME CONSTANTS
;
;============================================================================
;
DEFBNK	EQU	0		;DEFAULT BANK #
;
;   BREAKPOINTS
;
NBKPTS	EQU	2		;NUMBER OF BREAKPOINTS
BP_RST	EQU	8		;BREAKPOINT RESTART #
BP_RSTV	EQU	BP_RST		;BREAKPOINT RESTART VECTOR LOCATION
BP_RSTI	EQU	0C7H + BP_RSTV	;BREAKPOINT INSTRUCTION
;
;   MONITOR FUNCTION CALL
;
MFUNRST	EQU	20H		;FUNCTION RESTART VECTOR #
MFUNRSV	EQU	MFUNRST		;FUNCTION RESTART VECTOR LOCATION
MFUNRSI	EQU	0C7H + MFUNRST	;FUNCTION RESTART INSTRUCTION
;
;   MONITOR ADDRESSES
;
MONROM	EQU	0F800H		;ROM START ADDR
;
;   PAGE 0 LOCATIONS
;
WSVEC	EQU	0		;VECTOR NUMBER FOR WARM RESTART
;
IOBYTE	EQU	3		;ADDR OF I/O CONTROL BYTE
IOBYTV	EQU	00H		;DEFAULT IOBYTE VALUE
;
;   MEMORY BANK DATA IN PAGE 0
;
THIS_BNK EQU	001BH		;BANK # FOR THIS BANK (CONSTANT)
THIS_STK EQU	001CH		;STACK PTR WHILE THIS BANK IS SELECTED
PREV_BNK EQU	001EH		;LINK BACK TO PREVIOUS BANK
;
;   ASCII CONSTANTS
;
CTRLS	EQU	13H		;ASCII DC3
CR	EQU	0DH
LF	EQU	0AH
BELL	EQU	7
;
;   MONITOR ROM EXTENSIONS
;
MR_RNUM	EQU	0	;RESIDENT ROM
DK_RNUM	EQU	2	;DISK ROM
DEB_RNUM EQU	3	;DEBUGGER ROM
CHR_RNUM EQU	4	;CHAR I/O ROM
CLK_RNUM EQU	7	;MISC. I/O ROM


;============================================================================
;
;   RAM VARIABLES
;
;============================================================================
;
;   SAVE 128 BYTES FOR MONITOR
;
	ORG	MONROM - 128
MONSTK	EQU	$
;
;   REGISTER IMAGE STORAGE
;
RLOC	DS	1	;R
ILOC	DS	1	;I
YLOC	DS	2	;IY
XLOC	DS	2	;IX
FPLOC	DS	1	;F'
APLOC	DS	1	;A'
CPLOC	DS	1	;C'
BPLOC	DS	1	;B'
EPLOC	DS	1	;E'
DPLOC	DS	1	;D'
LPLOC	DS	1	;L'
HPLOC	DS	1	;H'
ELOC	DS	1	;E
DLOC	DS	1	;D
CLOC	DS	1	;C
BLOC	DS	1	;B
FLOC	DS	1	;F
ALOC	DS	1	;A
SLOC	DS	2	;SP
;
LLOC	DS	1	;L
HLOC	DS	1	;H
PLOC	DS	2	;PC
BNKLOC	DS	1	;PC BANK #

;
;   BANKED MEMORY MANAGEMENT
;
CBANK	DS	1	;CURRENT EXECUTION BANK
DBANK	DS	1	;DESTINATION BANK # FOR MOVE
SBANK	DS	1	;SOURCE BANK # FOR MOVE
BNKCHG	DS	1	;BANK CHANGED FLAG (0: NOT, /0: CHANGED)

;
;   BREAKPOINTS
;
	STRUCT	0
BPADDR	DS	2	;ADDRESS OF BREAKPOINT
BPABNK	DS	1	;BANK # OF BREAKPOINT
BPDATA	DS	1	;DATA DISPLACED BY RESTART INSTRUCTION
BP_REC	DS	0	;NUMBER OF BYTES IN RECORD
	ENDM
TLOC:
	REPT	NBKPTS
	DS	BP_REC
	ENDM

;
;   BANK #S ASSOCIATED WITH ARGUMENTS
;
ARGPTR	DS	2	;PTR TO CURRENT ARGUMENT'S BANK
A1_BNK	DS	1	;ARG #1 BANK
A2_BNK	DS	1
A3_BNK	DS	1
;
;   DISK IOPB RESERVATION
;
IOPB:	DS	PB_SIZE
;
;   DISK ROM VARS
;
DDADDR	DS	3	;JADE CONTROLLER ADDRESS, BANK
DDPORT	DS	1	;JADE CONTROLLER PORT
IOPBPTR	DS	3	;CURRENT IOPB POINTER

   IF ($ AND 7FFFH) > 7800H
	CONMSG	**** RAM Allocation Too Large! ****
   ENDIF
