// MDecl.d--definitions for machine-independent part of Midas // 23 June 1983 // Basic display region structure manifest [ get "MMenus.d" ] manifest [ MaxNRegions = 70; MenRgn = 0; TextRgn = 1; NopRgn = 2 ] manifest [ get "MAsmCommon.d" ] structure Rgn: [ DispDirty bit // 1 if this region should paint during next // display loop. This should only be set using // MarkRgnDispDirty(R) Type bit 2 // Type of region (MenRgn or TextRgn) aLineX bit 6 //Absolute locations aCharX bit 7 Height byte //Size Width byte // The region reference point is in the upper left hand // corner of the region. ] structure [ CV↑0,100 byte ] //Same as OS STRING structure //MDFS only referenced in MINIT1, MMENU, MMPRGN, and MMPRGNOV (?). //The structure is preceded by the following vectors: // ProcVec MDFS.ProcNMax words // Word 0 contains count of items and words 1 to count // contain pointers to actions. // SizeVec (MDFS.Rgn.Height+MDFS.ProcNMax) rshift 1 words // Vector of subvectors for each of MDFS.Rgn.Height // lines. Byte 0 of each subvector is item count; // bytes 1 to count are nchars in ScreenTV for the // corresponding action name. // TextLines MDFS.Rgn.Height words // The words in TextLines count characters in ScreenTV // for lines of the region structure MDFS : [ Rgn @Rgn mIn bit Letter bit 7 //Letter for command files LineN byte //Line number for command files inLine byte ProcNMax byte //Max count for ProcV+1 SelectedItem byte garb bit 5 MenuMode bit 3 //0=idle, 1=standard menu, 2=address menu //3=radix menu, 4=display mode menu ] // Information returned by EvalAText manifest [ maxsymlen = 13; RegTypeStorage = 1; MemTypeStorage = 2 ] structure AVal: [ SName word (maxsymlen/2)+1 X byte //RegX or MemX Radix bit 2 //Coded 0=octal, 1=decimal, 2=hex DisplayMode bit 3 //Coded 0=numeric, 1=SearchBlocks, //2=symbolic TypeStorage bit 2 //Items below only apply to MemTypeStorage Sign bit //1 if offset can be signed Offset word 2 //Displacement relative to symbol Addr word 2 //Real memory address ] //Total storage for a name-value menu is 5 for MDFS, 4 for Valsize, //12 for AVal, 2 here, 5 for ProcVec, 3 for SizeVec, 1 for TextVec. //Total = 32 words. Hence, the total storage for //a display structure of 3 columns x 20 items/column is 60*32 words or //1920 words. //The code relies on the fact that a pointer to an MPD is a pointer to an //MDFS is a pointer to a RGN. The TextLines, SizeVec, and ProcVec stuff //precedes the pointer, as discussed previously. structure MPD: [ MDFS @MDFS NoName bit //1 means name not printed TextSpace bit 7 //Width in characters Extension bit 4 //Non-0 is extension of item above it Prelim bit 2 //0=$ (normal), //1=$~ (value unknown), //2=$* (value has changed), //3=$& (**not used**) RebuildText bit AlwaysUpdate bit Value word ValSize AVal @AVal ] structure dcb: [ Link word //Points at next 4-word DCB or 0 if last in list BufC word //(HTab lshift 8) % #40000 if black % //NwdsPerScanLine if bit buffer Buffer word //Points at bit buffer (Buffer!-2 and Buffer!-1 //are a list structure used by MDISP) Height word //Height/2 ] // MDISP stuff needed by initialization structure LCB: [ Line @dcb Sepr @dcb ] manifest [ BBLink = 0 BBSize = 1 DASTART = #420 IntVec = #501 IntActive = #453 VertIntChan = 2 HTab = 1 //HTab*16 raster points skipped/scan line MaxEveryTime = 4 MaxMenus = 125 ] structure Action: //Must agree with stuff in xxActions.asm [ Name word lvProc word lvMProc word Arg word ifPassive bit 1 //Action in command menu when passive ifActive bit 1 //Action in command menu when active ifEsc bit 1 //If remembered for <esc> execution ifNoRes bit 1 //Don't reset comment streams before action ifResEsc bit 1 //Reset <esc> action to Noop ifTO bit 1 //Requires preceding TimeOut in comfile ifFlags bit 2 //More flags Char byte //Char typed after ";" which invokes action ] // Symbol Table // Types of symbol table entries manifest [ // Undefined = 0 // for nullstring MemSymb = 1 // a memory definition RegSymb = 2 // a register definition AddrSymb = 3 // an address definition--one word value LAddrSymb = 4 // an address definition--two word value ] //The total storage for a symbol in the symbol table is: // 1 word for the pointer + the symbol block it points to: // The string name followed by: // 2 words/memory // 2 words/register // 3 words/address // 4 words/long address structure Symb : [ M: [ // a memory definition Type byte //One of the above types X byte //MemX ] = R: [ // a register definition Type byte //One of the above types X byte //RegX ] = A: [ // an address symbol Type byte //One of the above types X byte //MemX A2 word //address ] = LA: [ // a long address symbol Type byte //One of the above types X byte //MemX A1 word //high part of address A2 word //low part of address ] ] structure BH: // Block head [ LastPntr word FirstRcd word ] manifest [ OtherToken = 1 //Constants used by ChkToken BlankToken = 2 LimitToken = 3 SignToken = 4 LParToken = 5 RParToken = 6 CommaToken = 7 OctToken = 10B DecToken = 20B HexToken = 40B SymbToken = 100B DotToken = 200B MarkedOct = 400B MarkedDec = 1000B MarkedHex = 2000B ] // Generally useful structure structure [ lh byte; rh byte ] //MidasSwat parameters for machine-independent .bcpl files. //Error strings are in Midas.Errors. //By convention these numbers are less than 1000; .asm file //error numbers in masmcommon.d are between 1000 and 1999. manifest [ BadSaveStateFP = 0 BadRestoreStateFP = 1 MidasIncompatible = 2 StateFileClobbered = 3 BadOverlayCall = 4 NoOD = 5 BadOvlRelease = 6 SwapOutCall = 7 RTablesInconsistent = 8 MTablesInconsistent = 9 NonXFile = 10 CreateFailed = 11 BadSwitch = 12 OvlScanFailure = 13 LUEBug = 14 IllegalChars = 15 TooManyNames = 16 MSymInitBug = 17 VSEmsg = 18 TMAforSaveStatics = 19 StateBlockTiny = 20 TooManyRgns = 21 BadNewRegionArgs = 22 BadMenuName = 23 DuplicateMenuName = 24 BadMPDInit = 25 NoComCm = 26 IllStorageType = 27 NoFreeBlock = 28 UndefStrategy = 29 BadHeadUpdate = 30 BadBlockUpdate = 31 BlockSplitBug = 32 BadSymOrder = 33 SymTabOvf = 34 BadBlockAddr = 35 NBitsG32 = 36 BadRadix = 37 NoFreeBB = 38 BadFontChar = 39 ETLOvf = 40 BadArgforRETL = 41 ActionOVF = 42 TooManyActions = 43 BadExtension = 44 BadModeTable = 45 SmallsysZone = 46 TooManyCF = 47 BadFixupFile = 48 TestAsmEdit = 49 NoFixups = 50 NoCompare = 51 ImpBinScan = 52 TooManyRC = 53 TooManyRP = 54 ]