#ifndef PV_DEBUGBASE_H
#define PV_DEBUGBASE_H TRUE
/*
**  $Filename: DebugBase.h $
**  $Release: 1.02 $
**  $Revision: 37.346 $
**  $Date: 15 Sep 91 $
**
**  Structure definitions for Debug Base (see 'TheWizardCorner')
**
**  © 1991 Jorrit Tyberghein, included with PowerVisor
**	    All Rights Reserved
*/

#ifndef PV_PVMEMORY_H
#include "PVMemory.h"
#endif

#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif


#define TRACE_NONE	0
#define TRACE_TRACE	1
#define TRACE_EXEC	2

#define TRACES_NORMAL	0
#define TRACES_TTRACE	1
#define TRACES_CRASH	2
#define TRACES_BREAK	3
#define TRACES_TBREAK	4
#define TRACES_WAIT	5
#define TRACES_ERROR	6

#define TRACET_NORMAL	0
#define TRACET_AFTER	1
#define TRACET_STEP	2
#define TRACET_UNTIL	3
#define TRACET_REG	4
#define TRACET_COND	5
#define TRACET_BRANCH	6
#define TRACET_FORCE	7
#define TRACET_OSCALL	8
#define TRACET_SKIP	9


struct BreakpointNode
	{
		struct Node node;
		UWORD Number;
		APTR Address;
		UWORD OrigContents;
		UBYTE Type;
		UBYTE pad0;
		ULONG UsageCount;
		ULONG AdditionalArg;
		APTR BreakRout;
		ULONG pad1;
	};

struct DebugNode
	{
		struct Node node;
		ULONG MatchWord;	/* 'DBUG' */
		UBYTE Mode;
		UBYTE SMode;
		APTR LoadedSegment;
		APTR ProgramCounter;
		APTR TempRout;
		APTR TraceExceptRout;
		APTR RestoreBreakpoint;
		ULONG AdditionalInfo;
		UBYTE TMode;
		UBYTE pad0;
		UBYTE TDNestCnt;
		UBYTE IDNestCnt;
		UBYTE TaskState;
		UBYTE Dirty;
		ULONG SigWait;
		ULONG CrashNum;
		ULONG AdditionalArg;
		struct Task *DebugTask;
		ULONG TopPC;
		ULONG BottomPC;
		UWORD LastDumpLine;
		UBYTE InstructionBytes[32];
		APTR InitPC;
		APTR OldTrapCode;
		struct PVQuickBlock Symbols;
		struct PVQuickBlock Strings;
		struct List Breakpoints;
		UWORD pad1;
		ULONG pad2;
		UWORD pad3;
		UBYTE pad4;
		UBYTE pad5;
		APTR QuitCode;
		APTR OrigQuitCode;
		ULONG SP;
		ULONG PC;
		UWORD SR;
		ULONG Registers[15];
		UBYTE pad6[16];
	};

struct DebugBase
	{
		ULONG FloatingPoint;
		struct List DebugTasks;
		struct DebugNode *CurrentDebug;
		UBYTE pad0[16];
		UBYTE pad1[8];
		UBYTE ShowRegInfo;
		UBYTE GiveDisassembly;
		UWORD NumLinesToDisassemble;
		UWORD PreviousInstruction;
	};

#endif
