; D1actions.asm--ActionBlock table and related statics
;	10 May 1983

.get "MMenus.d"

; OS
.bext Noop

; MDISP
.bext SetDisplay,Blink

; MMPRGN
.bext SetAddr,SetValue,StepAddr,MPDMChange

; MMPRGNOV
.bext SkipVEql,SkipVGr,SkipVLs,SkipVNEql,SkipVGrE,SkipVLsE
.bext ChangeRadix,ShowMode,FillColumn,CmdAddrEq,CmdPrettyPrint

; MCMD
.bext CmdRunProg,CmdDoRC,ReadCMenu,StartCmdOverlay
.bext StartLargeOverlay,EndError,ExecuteCFile,CmdWriteState

; MCMDOV
.bext CmdFinish,CmdSkipCmd,CmdStartWC,CmdStopWC,CmdShowCmds,CmdTimeOut
.bext CmdConfirm,CmdReturn,CmdAbortCFile,CmdShowError,CmdOpenOutput
.bext CmdCloseOutput,CmdWriteMessage,CmdDumpDisplay

; MBRKP
.bext InsertBreak,RemoveBreak

; MGO
.bext StartM,SingleStepM,CallWithAddr,StartWithAddr,StartBigOvlWithAddr
.bext ProceedM

; MGOOVL
.bext StartWithArgs

; MRGO
.bext RepeatGo,RepeatSS

; MLOAD
.bext InitLoad,LoadMB,LoadSyms,LoadData,CompareMB,DumpMB

; MTEST
.bext DataTest,ContinueTest,FreeRunTest,TestAll,ContinueTAll,SkipTAll

; MFIELDLP
.bext FieldTest

; MPESCAN
.bext PEScan

; MDAYTIME
.bext WriteDayTime

; D1GO
.bext CallM,OpcodeStep

; D1POKE
.bext SetPassive,UpdateVals

; D1TI
.bext TiAct,RepT2

; D1CONFIG
.bext D1Config

; D1SPEED
.bext D1ClockSpeed

; D1RESET
.bext D1Reset

; D1VM
.bext SetVirtP

; D1PRIN3
.bext ShowDMux

; D1SIMT
.bext StartSim,SimTest

; D1LDRTEST
.bext MicTest

; D1HWCHECK
.bext HWCheck

; Defined here
;	For MMENU mostly
.bext ActionBlock,ActionPtr,LastAction
.bext NoopAction,EscAction,CRAction,NewEscAction,NewCRAction
.bextz LongOne
.bext LongMinOne

;	For MMPRGN
.bext BugAddrAct,BugValAct,Plus1Act,Minus1Act,ColumnAct
.bext OctAct,HexAct,DecAct,SearchAct,SymbolicAct,NumericAct

;	For MCMD
.bext CmdDumpAct,CmdStartWCAct,CmdStopWCAct,CmdShowCmdAct,CmdConcealAct
.bext CmdErrorContinueAct,CmdErrorAbortAct,CmdCFileAbortAct
.bext NHWCFActions,HWCFActions
.bext FirstCmdAction	; Points at first command menu action
.bext LastCmdAction	; Points at last action in main command menu

;	For MGO
.bext DetachAct,ExitAct

;	For MTEST
.bext ConTAct,FreeRunTAct,ConTAllAct,SkipTAllAct

;	For D1RES
.bext VirtAct,AbsAct,DMuxAct,ActiveAct,PassiveAct

.txtm B

.zrel

LongOne:	.LongOne

.srel

ActionBlock:	.ActionBlock
FirstCmdAction:	.FirstCmdAction
LastCmdAction:	.LastCmdAction
ActionPtr:	(.LastAction-.ActionBlock+5)/5
LastAction:	.LastAction

BugAddrAct:	.BugAddrAct
BugValAct:	.BugValAct
Plus1Act:	.Plus1Act
Minus1Act:	.Minus1Act
ColumnAct:	.ColumnAct
OctAct:		.OctAct
HexAct:		.HexAct
DecAct:		.DecAct
NumericAct:	.NumericAct
SearchAct:	.SearchAct
SymbolicAct:	.SymbolicAct

CmdDumpAct:	.CmdDumpAct
CmdStartWCAct:	.CmdStartWCAct
CmdStopWCAct:	.CmdStopWCAct
CmdShowCmdAct:	.CmdShowCmdAct
CmdConcealAct:	.CmdConcealAct
CmdErrorContinueAct:	.CmdErrorContinueAct
CmdErrorAbortAct:	.CmdErrorAbortAct
CmdCFileAbortAct:	.CmdCFileAbortAct
DetachAct:	.DetachAct
ExitAct:	.ExitAct

ConTAct:	.ConTAct
FreeRunTAct:	.FreeRunTAct
ConTAllAct:	.ConTAllAct
SkipTAllAct:	.SkipTAllAct

VirtAct:	.VirtAct
AbsAct:		.AbsAct
DMuxAct:	.DMuxAct
ActiveAct:	.ActiveAct
PassiveAct:	.PassiveAct

NoopAction:	.NoopAction
; These four are modified by DoAction and in Test and TestAll
EscAction:	.NoopAction
CRAction:	.NoopAction
NewEscAction:	.NoopAction
NewCRAction:	.NoopAction

NHWCFActions:	(.LastHWCFAction-.HWCFActions)/5
HWCFActions:	.HWCFActions

AddrTable0:	.AddrTable0
AddrTable1:	.AddrTable1
AddrTable2:	.AddrTable2
ValTable0:	.ValTable0
ValTable1:	.ValTable1
ValTable2:	.ValTable2
LongMinOne:	.LongMinOne


.nrel

; Tables used by MPD actions indexed by buttons
BugAddrMenu:	StandardMenu	; none
		StandardMenu	; 1 = Middle
		AddressMenu	; 2 = Bottom
		FillCMenu	; 3 = Middle+Bottom
		StandardMenu	; 4 = Top
		RadixMenu	; 5 = Top+Middle
		StandardMenu	; 6 = Top+Bottom
		StandardMenu	; 7 = all

BugValMenu:	StandardMenu
		StandardMenu
		StandardMenu
		DisplayModeMenu
		StandardMenu
		RadixMenu
		StandardMenu
		StandardMenu

.AddrTable0:	BugAddrMenu-.
		0
.LongOne:	0
		1

.AddrTable1:	BugAddrMenu-.
		1
.LongMinOne:	177777
		177777

.AddrTable2:	BugAddrMenu-.
		2

.ValTable0:	BugValMenu-.
		0

.ValTable1:	BugValMenu-.
		1

.ValTable2:	BugValMenu-.
		2

; An entry in the ActionBlock is:
;	Name
;	lvProc	; May be in overlay
;	lvMProc	; Has to be resident because the MouseChange procedure
;		; will call this several times when the mouse moves
;		; across the item
;	Arg
;	Flags,,Char
; The self-relative name pointers here are converted to absolute by MINIT0

; Flags below only apply to items between FirstCmdAction and LastCmdAction
ifP = 100000	; In primary command menu when PassiveOnly is true
ifA =  40000	; In primary command menu when PassiveOnly is false

; These flags apply to all commands
ifEsc = 20000	; Remember this action and repeat for subsequent <esc>
ifNoRes = 10000	; Don't reset CmdCommentStream and CmdCS1 before action
ifResEsc = 4000	; Reset <esc> action to Noop after this command
ifTO = 2000	; Requires preceding TimeOut in command file

.ActionBlock:

.BugAddrAct:
	BugAn-.
	SetAddr
	MPDMChange
	AddrTable0
	0

.BugValAct:
	BugVn-.
	SetValue
	MPDMChange
	ValTable0
	0

; Actions in AddressMenu
.Plus1Act:
	Plusn-.
	StepAddr
	MPDMChange
	AddrTable0
	ifEsc

.Minus1Act:
	Minn-.
	StepAddr
	MPDMChange
	AddrTable1
	ifEsc

; Actions in RadixMenu (2 of these 3)
.OctAct:
	Oct-.
	ChangeRadix
	MPDMChange
	ValTable0
	0

.DecAct:
	Dec-.
	ChangeRadix
	MPDMChange
	ValTable1
	0

.HexAct:
	Hex-.
	ChangeRadix
	MPDMChange
	ValTable2
	0

; Actions in DisplayMode menu (2 of these 3)
.NumericAct:
	Num-.
	ShowMode
	MPDMChange
	ValTable0
	0

.SearchAct:
	Search-.
	ShowMode
	MPDMChange
	ValTable1
	0

.SymbolicAct:
	Sym-.
	ShowMode
	MPDMChange
	ValTable2
	0

.ColumnAct:
	FillC-.
	FillColumn
	MPDMChange
	AddrTable0
	0

; **Begin Actions always appearing in main command menu**
.FirstCmdAction:
	Runp-.
	CmdRunProg
	Noop
	0
	ifP+ifA+ifResEsc

	Readc-.
	CmdDoRC
	Noop
	ReadCMenu
	ifP+ifA+ifResEsc+ifNoRes

.DetachAct:
	Dtachn-.
	CmdRunProg
	Noop
	177777
	ifA+ifP+ifResEsc

.ExitAct:
	Exitn-.
	CmdFinish
	Noop
	0
	ifA+ifP+"Q

	Breakn-.
	CallWithAddr
	Noop
	InsertBreak
	ifA+"B

	KillBn-.
	CallWithAddr
	Noop
	RemoveBreak
	ifA+"K

	Startn-.
	StartWithAddr
	Noop
	StartM
	ifP+ifA+ifEsc+ifTO+"G

	SSn-.
	CallWithAddr
	Noop
	SingleStepM
	ifP+ifA+ifEsc+":

	OSn-.
	StartWithAddr
	Noop
	OpcodeStep
	ifP+ifA+ifEsc+ifTO

	Loadn-.
	InitLoad
	Noop
	LoadMB
	ifA+ifResEsc+"L

	LoadSn-.
	InitLoad
	Noop
	LoadSyms
	ifP+ifA+ifResEsc

	Compn-.
	InitLoad
	Noop
	CompareMB
	ifA+ifResEsc+"C

	Resetn-.
	StartCmdOverlay
	Noop
	D1Reset
	ifA+ifResEsc

	SetCn-.
	StartCmdOverlay
	Noop
	D1ClockSpeed
	ifA+ifResEsc

	Confign-.
	StartCmdOverlay
	Noop
	D1Config
	ifA+ifResEsc

	PEscn-.
	StartCmdOverlay
	Noop
	PEScan
	ifA+ifResEsc

	TAlln-.
	StartCmdOverlay
	Noop
	TestAll
	ifA+ifResEsc

	Testn-.
	StartCmdOverlay
	Noop
	DataTest
	ifA+ifResEsc

	SimTn-.
	StartLargeOverlay
	Noop
	SimTest
	ifA+ifEsc+ifTO

	SimGon-.
	StartBigOvlWithAddr
	Noop
	StartSim
	ifP+ifA+ifEsc+ifTO

	HWchkn-.
	StartCmdOverlay
	Noop
	HWCheck
	ifA+ifResEsc

	TiAn1-.
	TiAct
	Noop
	1
	ifP+ifA+ifEsc

	TiAn2-.
	TiAct
	Noop
	2
	ifP+ifA+ifEsc

	TiAn3-.
	TiAct
	Noop
	3
	ifP+ifA+ifEsc

	Repgn-.
	StartWithAddr
	Noop
	RepeatGo
	ifP+ifA+ifEsc+ifTO+"R

	RepSn-.
	StartWithAddr
	Noop
	RepeatSS
	ifP+ifA+ifEsc+ifTO+"S

	RepT2n-.
	StartCmdOverlay
	Noop
	RepT2
	ifP+ifA+ifEsc+ifTO

	Fldn-.
	StartCmdOverlay
	Noop
	FieldTest
	ifA+ifResEsc

	ConsTn-.
	StartCmdOverlay
	Noop
	MicTest
	ifA+ifResEsc+ifTO

.LastCmdAction:
	Updaten-.
	UpdateVals
	Noop
	0
	ifP

; **End of Actions always in main command menu**
; **Begin invisible, conditionally, or unusually displayed Actions**

.DMuxAct:
	DMuxn-.
	ShowDMux
	Noop
	0
	ifA+ifP+ifNoRes

.VirtAct:
	Virtn-.
	SetVirtP
	Noop
	177777
	ifNoRes

.AbsAct:
	Abson-.
	SetVirtP
	Noop
	0
	ifNoRes

.ActiveAct:
	Activen-.
	SetPassive
	Noop
	0
	ifNoRes+ifP+ifResEsc

.PassiveAct:
	Passiven-.
	SetPassive
	Noop
	177777
	ifNoRes+ifA+ifResEsc

	Loaddt-.
	InitLoad
	Noop
	LoadData
	0

	Proceedn-.	; ";P" eq ";G" except BottomButton is used
	StartWithAddr
	Noop
	ProceedM
	ifP+ifA+ifEsc+ifTO+"P

	Addrn-.
	CmdAddrEq
	Noop
	0
	"=

	Calln-.
	StartWithArgs
	Noop
	CallM
	ifP+ifA+ifEsc+ifTO+")

	DispOf-.
	SetDisplay
	Noop
	177777
	ifNoRes+"O-100

	DispOn-.
	SetDisplay
	Noop
	0
	ifNoRes+"D-100

	TimeOn-.
	CmdTimeOut
	Noop
	0
	ifNoRes

	Confn-.
	CmdConfirm
	Noop
	0
	ifNoRes

	Skipn-.
	CmdSkipCmd
	Noop
	0
	ifNoRes

	BSkipn-.
	CmdSkipCmd
	Noop
	177777
	ifNoRes

	Retn-.
	CmdReturn
	Noop
	0
	ifNoRes

	Shown-.
	CmdShowError
	Noop
	0
	ifResEsc

	Openn-.
	CmdOpenOutput
	Noop
	0
	ifResEsc+ifNoRes

	Apendn-.
	CmdOpenOutput
	Noop
	-1
	ifResEsc+ifNoRes

	Closen-.
	CmdCloseOutput
	Noop
	0
	ifResEsc+ifNoRes

	Writem-.
	CmdWriteMessage
	Noop
	0
	ifResEsc+ifNoRes

	DmpDsn-.
	CmdDumpDisplay
	Noop
	0
	ifResEsc+ifNoRes

	PrtPrn-.
	CmdPrettyPrint
	Noop
	0
	ifResEsc

.CmdDumpAct:
	Dumpn-.
	InitLoad
	Noop
	DumpMB
	ifResEsc+"D

.CmdStartWCAct:
	Swcn-.
	CmdStartWC
	Noop
	0
	0

.CmdStopWCAct:
	Spwcn-.
	CmdStopWC
	Noop
	0
	0

.CmdShowCmdAct:
	Shocn-.
	CmdShowCmds
	Noop
	177777
	0

.CmdConcealAct:
	Concn-.
	CmdShowCmds
	Noop
	0
	0

.CmdErrorContinueAct:
	Cconn-.
	EndError
	Noop
	177777
	0

.CmdErrorAbortAct:
	Caboa-.
	EndError
	Noop
	0
	0

.CmdCFileAbortAct:
	CabCF-.
	CmdAbortCFile
	Noop
	1
	ifResEsc+"Z-100

	Skven-.
	SkipVEql
	Noop
	0
	ifNoRes

	Skvgn-.
	SkipVGr
	Noop
	0
	ifNoRes

	Skvln-.
	SkipVLs
	Noop
	0
	ifNoRes

	Skvge-.
	SkipVGrE
	Noop
	0
	ifNoRes

	Skvle-.
	SkipVLsE
	Noop
	0
	ifNoRes

	Skvne-.
	SkipVNEql
	Noop
	0
	ifNoRes

	WrDTn-.
	WriteDayTime
	Noop
	0
	ifNoRes

	WrStn-.
	CmdWriteState
	Noop
	0
	ifResEsc

.ConTAllAct:
	ConTAll-.
	StartCmdOverlay
	Noop
	ContinueTAll
	0

.SkipTAllAct:
	SkpTAll-.
	StartCmdOverlay
	Noop
	SkipTAll
	0

.ConTAct:
	ConTst-.
	StartCmdOverlay
	Noop
	ContinueTest
	ifTO

.FreeRunTAct:
	FrTst-.
	StartCmdOverlay
	Noop
	FreeRunTest
	ifTO

; MINIT0 converts the special-. to absolute string pointers
.HWCFActions:
	tpc-.
	ExecuteCFile
	0
	special-.
	ifNoRes

	tlink-.
	ExecuteCFile
	2
	special-.
	ifNoRes

	t-.
	ExecuteCFile
	4
	special-.
	ifNoRes

	rbase-.
	ExecuteCFile
	6
	special-.
	ifNoRes

	membase-.
	ExecuteCFile
	10
	special-.
	ifNoRes

	tioa-.
	ExecuteCFile
	12
	special-.
	ifNoRes

	md-.
	ExecuteCFile
	14
	special-.
	ifNoRes

	alufm-.
	ExecuteCFile
	16
	special-.
	ifNoRes

	brlo-.
	ExecuteCFile
	20
	special-.
	ifNoRes

	brhi-.
	ExecuteCFile
	22
	special-.
	ifNoRes

	vh0-.
	ExecuteCFile
	24
	special-.
	ifNoRes

	vh20-.
	ExecuteCFile
	27
	special-.
	ifNoRes

	hist0-.
	ExecuteCFile
	32
	special-.
	ifNoRes

.LastAction:
	hist20-.
	ExecuteCFile
	35
	special-.
	ifNoRes
.LastHWCFAction:


.blk (5*MaxActions)-(.LastAction-.ActionBlock)

.NoopAction:
	NopA-.
	Blink
	Noop
	0
	ifNoRes

NopA:		.txt "Noop"

; Midas actions for name value menus
BugAn:		.txt "Addr"
BugVn:		.txt "Val"
Plusn:		.txt "A+1"
Minn:		.txt "A-1"
Oct:		.txt "Oct"
Dec:		.txt "Dec"
Hex:		.txt "Hex"
Num:		.txt "Num"
Search:		.txt "Search"
Sym:		.txt "Sym"
FillC:		.txt "FillC"

; Midas command-file actions for name value menus
Skven:		.txt "SkipE"
Skvgn:		.txt "SkipG"
Skvln:		.txt "SkipL"
Skvge:		.txt "SkipGE"
Skvle:		.txt "SkipLE"
Skvne:		.txt "SkipNE"

; Midas actions for command menu
Runp:		.txt "RunProg"
Readc:		.txt "RdCmds"
Dtachn:		.txt "Dtach"
Exitn:		.txt "Exit"
Breakn:		.txt "Brk"
KillBn:		.txt "UnBrk"
Startn:		.txt "Go"
SSn:		.txt "SS"
Loadn:		.txt "Ld"
LoadSn:		.txt "LdSyms"
  Dumpn:	.txt "Dump"
Compn:		.txt "Cmpr"
TAlln:		.txt "TestAll"
Testn:		.txt "Test"
Repgn:		.txt "RepGo"
RepSn:		.txt "RepSS"
Fldn:		.txt "Fields"
Swcn:		.txt "WrtCmds"
  Spwcn:	.txt "StopWrt"
Shocn:		.txt "ShowCmds"
  Concn:	.txt "StopShow"

; Keyboard actions
Addrn:		.txt "Addr="
Proceedn:	.txt "Proceed"
DispOf:		.txt "DisplayOff"
DispOn:		.txt "DisplayOn"
ConTst:		.txt "ConTst"
FrTst:		.txt "FrTst"
ConTAll:	.txt "ConTAll"
SkpTAll:	.txt "SkipTAll"

; Midas actions for command files only
Loaddt:		.txt "LdData"
Cconn:		.txt "Continue"
Caboa:		.txt "Abort"
CabCF:		.txt "Abort-CFile"
TimeOn:		.txt "TimeOut"
Confn:		.txt "Confirm"
Skipn:		.txt "Skip"
BSkipn:		.txt "BackSkip"
Retn:		.txt "Return"
Shown:		.txt "ShowError"
Openn:		.txt "OpenOutput"
Apendn:		.txt "AppendOutput"
Closen:		.txt "CloseOutput"
Writem:		.txt "WriteMessage"
DmpDsn:		.txt "DumpDisplay"
WrDTn:		.txt "WriteDT"
PrtPrn:		.txt "PrettyPrint"
WrStn:		.txt "WriteState"

; D1Midas actions for command menu
Activen:	.txt "Active"
  Passiven:	.txt "Passive"
  Updaten:	.txt "Update"
Virtn:		.txt "Virt"
  Abson:	.txt "Abs"
Resetn:		.txt "Reset"
SetCn:		.txt "SetClk"
Confign:	.txt "Config"
PEscn:		.txt "PEscan"
SimTn:		.txt "SimTest"
SimGon:		.txt "SimGo"
HWchkn:		.txt "HWchk"
OSn:		.txt "OS"
Calln:		.txt "Call"
TiAn1:		.txt "T1"
TiAn2:		.txt "T2"
TiAn3:		.txt "T3"
RepT2n:		.txt "RepT2"
ConsTn:		.txt "LDRtest"
DMuxn:		.txt "DMux"	; Displayed "DMux", "OldDMux", "DWrong",
				; or "DChk" in command menu.

; D1Midas actions in RdCmds menu
tpc:		.txt "TPC"
tlink:		.txt "TLINK"
t:		.txt "T"
rbase:		.txt "RBASE"
membase:	.txt "MEMBASE"
tioa:		.txt "TIOA"
md:		.txt "MD"
alufm:		.txt "ALUFM"
brlo:		.txt "BRLO"
brhi:		.txt "BRHI"
vh0:		.txt "VH0"
vh20:		.txt "VH20"
hist0:		.txt "HIST0"
hist20:		.txt "HIST20"
special:	.txt "SPECIAL"

.end