; d1tables.asm -- Midas/D1 machine description tables
; Last edited: 21 July 1980
.get "d1regmem.d"
; MMPGRN
.bext RDatatoCSS,MDatatoCSS,BadAltIn
; D1MICRES
.bext MPrintMSTAT,MPrintUPTIME
; D1PRIN1
.bext PrintIM
; D1PRIN2
.bext PrintTLINK,PrintAATOVA,PrintIFUM,PrintD1OUT,PrintShC,PrintSTKP
.bext PrintWrdByt,PrintPCX,PrintMADDR,PrintBR
; D1PRIN3
.bext PrintDMUX,PrintMCR,PrintESTAT
; D1PRIN3W
.bext PrintTIOA,PrintMEMBASE,PrintTASK
; D1PRIN3X
.bext PrintALUFM
; D1PRIN5
.bext PrintCONFIG,PrintCACHEA,PrintROW,PrintMAP,PrintPIPE,PrintINSSET
; D1PRINMIC
.bext PrintMSTAT,PrintABSOL
; D1TYPEIN
.bext InstructionIn,WrdBytIn
; Defined here
.bextz MEMNAM,MEMFORMS,MEMWID,MEMLEN,MEMCON,NMEMS
.bext AltMForms,AltMInput
.bextz REGNAM,REGFORMS,REGWID,REGCON,NREGS
.bext AltRForms,AltRInput
.txtm B
.srel
AltMForms: .AltMForms
AltRForms: .AltRForms
AltMInput: .AltMInput
AltRInput: .AltRInput
.zrel
; Order registers and memories in the following tables so that TestAll
; will test the most basic ones first.
MEMNAM: .MName
MEMFORMS: .MForm
MEMLEN: .MLen
MEMWID: .MWid
MEMCON: .MCon
NMEMS: .MCon-.MWid
REGNAM: .RName
REGFORMS: .RForm
REGWID: .RWid
REGCON: .RCon
NREGS: .RCon-.RWid
.nrel
; *Note that the tables must be in the order given here because of*
; *the length error checks in MInit0().*
.RName: CPREGn-.
MIRn-.
IMOUTn-.
Qn-.
CNTn-.
SHCn-.
MEMBXn-.
STKPn-.
TASKn-.
PROCSRNn-.
MCRn-.
CONFIGn-.
PCXn-.
INSSETn-.
TESTSYNn-.
STROBEn-.
D1OUTn-.
UPTIMEn-.
TGLITCHn-.
EVCNTAn-.
EVCNTBn-.
AATOVAn-.
ESTATn-.
.RForm: 0 ; CPREG
FormIMa-. ; MIR
FormIMa-. ; IMOUT
0 ; Q
0 ; CNT
0 ; SHC
0 ; MEMBX
FormSTKP-. ; STKP
FormTASK-. ; TASK
0 ; PROCSRN
0 ; MCR
0 ; CONFIG
0 ; PCX
FormINSSET-. ; INSSET
0 ; TESTSYN
FormSTROBE-. ; STROBE
FormD1OUT-. ; D1OUT
FormUPTIME-. ; UPTIME
FormUPTIME-. ; TGLITCH
0 ; EVCNTA
0 ; EVCNTB
FormIMAddr-. ; AATOVA
0 ; ESTAT
.RWid: 20 ; CPREG
44 ; MIR
44 ; IMOUT
20 ; Q
20 ; CNT
20 ; SHC
2 ; MEMBX
12 ; STKP
4 ; TASK
4 ; PROCSRN
20 ; MCR
20 ; CONFIG
20 ; PCX
5 ; INSSET
20 ; TESTSYN
20 ; STROBE
20 ; D1OUT
60 ; UPTIME
60 ; TGLITCH
20 ; EVCNTA
20 ; EVCNTB
20 ; AATOVA
20 ; ESTAT
; **See MRType structure in MCommon.D**
; Bit 0 = value can be accessed when machine is running; read is ok
; if passive-read bit is set, write ok if passive-write bit set
; Bit 1 = defined (= can be examined on the display)
; Bit 2 to 4 = --
; Bit 5 = can be read passively
; Bit 6 = read-only
; Bit 7 = can be written passively
; Bit 10 = look for symbols with SearchBlocks (memories only)
; Bit 11-12 = default radix (0=octal, 1=decimal, 2=hex)
; Bit 13-14 = default display mode (0=numeric, 1=SearchBlocks, 2=symbolic)
; Bit 15 = automatic prettyprint
; Bit 16 = always read value and update display if necessary
; Bit 17 = tested in "Test-All"
.RCon: 140401 ; CPREG
42405 ; MIR
42400 ; IMOUT (read-only unless DMuxSelect eq DChecked)
40001 ; Q
40001 ; CNT
40005 ; SHC
40001 ; MEMBX
40001 ; STKP
42001 ; TASK
40001 ; PROCSRN
42005 ; MCR
41000 ; CONFIG
41004 ; PCX
40001 ; INSSET (insset bits writeable, idcnt bits aren't)
42000 ; TESTSYN
42404 ; STROBE
42404 ; D1OUT
143022 ; UPTIME
143022 ; TGLITCH
41000 ; EVCNTA (read-only)
40001 ; EVCNTB
142404 ; AATOVA
42404 ; ESTAT
.AltRForms:
RDatatoCSS ; CPREG
PrintIM ; MIR
PrintIM ; IMOUT
PrintWrdByt ; Q
PrintWrdByt ; CNT
PrintShC ; SHC
RDatatoCSS ; MEMBX
PrintSTKP ; STKP
PrintTASK ; TASK
RDatatoCSS ; PROCSRN
PrintMCR ; MCR
PrintCONFIG ; CONFIG
PrintPCX ; PCX
PrintINSSET ; INSSET
RDatatoCSS ; TESTSYN
PrintD1OUT ; STROBE
PrintD1OUT ; D1OUT
RDatatoCSS ; UPTIME
RDatatoCSS ; TGLITCH
RDatatoCSS ; EVCNTA
RDatatoCSS ; EVCNTB
PrintAATOVA ; AATOVA
PrintESTAT ; ESTAT
.AltRInput:
BadAltIn ; CPREG
InstructionIn ; MIR
BadAltIn ; IMOUT
WrdBytIn ; Q
WrdBytIn ; CNT
WrdBytIn ; SHC
BadAltIn ; MEMBX
BadAltIn ; STKP
BadAltIn ; TASK
BadAltIn ; PROCSRN
BadAltIn ; MCR
BadAltIn ; CONFIG
BadAltIn ; PCX
BadAltIn ; INSSET
BadAltIn ; TESTSYN
BadAltIn ; STROBE
BadAltIn ; D1OUT
BadAltIn ; UPTIME
BadAltIn ; TGLITCH
BadAltIn ; EVCNTA
BadAltIn ; EVCNTB
BadAltIn ; AATOVA
BadAltIn ; ESTAT
.MName: ABSOLn-.
TPCn-.
TLINKn-.
OLINKn-.
IMBDn-.
IMn-.
IMXn-.
ALUFMn-.
Tn-.
RBASEn-.
TIOAn-.
MEMBASEn-.
RMn-.
STKn-.
PIPEn-.
BRn-.
CACHEAn-.
CACHEDn-.
MAPn-.
VMn-.
IFUMn-.
LDRn-.
MDATAn-.
MADDRn-.
DMUXn-.
DHISTn-.
VHn-.
MDn-.
TASKNn-.
DEVICEn-.
STKXn-.
MSTATn-.
ABSn-.
ROWn-.
BRXn-.
.MForm: 0 ; $ABSOLUTE
FormIMAddr-. ; TPC
FormIMAddr-. ; TLINK
FormIMAddr-. ; OLINK
FormIMa-. ; IMBD (direct outputs)
FormIMv-. ; IM (virtual)
FormIMa-. ; IMX (absolute)
0 ; ALUFM
0 ; T
0 ; RBASE
FormTIOA-. ; TIOA
FormMEMBASE-. ; MEMBASE
0 ; RM
0 ; STK
FormPIPE-. ; PIPE
FormBR-. ; BR
FormCACHEA-. ; CACHEA
0 ; CACHED
FormMAP-. ; MAP
0 ; VM
FormIFUM-. ; IFUM
FormIMa-. ; LDR
FormIMa-. ; MDATA
Form32-. ; MADDR
0 ; DMUX
FormDH-. ; DHIST
Form32-. ; VH
0 ; MD
0 ; TASKN
0 ; DEVICE
0 ; STKX
FormMSTAT-. ; MSTAT
FormABS-. ; $ABS
FormROW-. ; ROW
FormBRX-. ; BRX
.MLen: 1 ; $ABSOLUTE
0
0 ; TPC
NTasks
0 ; TLINK
NTasks
0 ; OLINK
NTasks
0 ; IMBD (direct outputs)
IMlen
0 ; IM (virtual)
IMlen
0 ; IMX (absolute)
IMlen
0 ; ALUFM
20
0 ; T
NTasks
0 ; RBASE
NTasks
0 ; TIOA
NTasks
0 ; MEMBASE
NTasks
0 ; RM
RMlen
0 ; STK
400
0 ; PIPE
20
0 ; BR
BRlen
0 ; CACHEA ("FixForConfig" fills this in)
0
0 ; CACHED ("FixForConfig")
0
0 ; MAP ("FixForConfig")
0
0 ; VM ("FixForConfig")
0
0 ; IFUM
2000
0 ; LDR
LDRlen
0 ; MDATA
MDATAlen
0 ; MADDR
MADDRlen
0 ; DMUX
DMUXlen
0 ; DHIST
DHISTlen
0 ; VH
DHISTlen
0 ; MD
NTasks
0 ; TASKN
NTasks
0 ; DEVICE
DEVICElen
0 ; STKX
77
0 ; MSTAT
24
0 ; $ABS
100000
0 ; ROW ("FixForConfig")
0
0 ; BRX
4
.MWid: 10 ; $ABSOLUTE
20 ; TPC
20 ; TLINK
20 ; OLINK
44 ; IMBD (direct outputs)
100 ; IM (virtual)
44 ; IMX (absolute)
10 ; ALUFM
20 ; T
4 ; RBASE
10 ; TIOA
5 ; MEMBASE
20 ; RM
20 ; STK
40 ; PIPE
40 ; BR
40 ; CACHEA
20 ; CACHED
40 ; MAP
20 ; VM
40 ; IFUM
44 ; LDR
MDATAwid ; MDATA
40 ; MADDR
20 ; DMUX
54 ; DHIST
40 ; VH
20 ; MD
20 ; TASKN
20 ; DEVICE
20 ; STKX
40 ; MSTAT
20 ; $ABS
40 ; ROW
40 ; BRX
; Bit 0 = value can be accessed when machine is running; read is ok if
; passive-read is also true, write ok if passive-write is true.
; Bit 1 = defined (can be examined on the display)
; Bit 2 = flush symbols in "Load" or "Dump" (Symbols in fake memories used
; only as artifacts of the assembly are treated this way.)
; Bit 3 = retain symbol even in "LdData"
; Bit 4 = has parity (appears in PE-scan menu)
; Bit 5 = can be read passively
; Bit 6 = read-only
; Bit 7 = can be written passively
; Bit 10 = look for symbols with SearchBlocks
; Bit 11-12 = default radix (0=octal, 1=decimal, 2=hex)
; Bit 13-14 = default display mode (0=numeric, 1=SearchBlocks, 2=symbolic)
; Bit 15 = prettyprint new value on A+1/A-1 and SetValue actions
; Bit 16 = always read value and update display
; Bit 17 = tested by "Test-All"
.MCon: 152700 ; $ABSOLUTE (hex)
40005 ; TPC
40005 ; TLINK
41004 ; OLINK
42004 ; IMBD (direct outputs for testing)
40204 ; IM (virtual)
44005 ; IMX (absolute)
40005 ; ALUFM
40001 ; T (Can't PEscan because T smashed everywhere)
40001 ; RBASE
40005 ; TIOA
40001 ; MEMBASE
44201 ; RM
44001 ; STK
41000 ; PIPE
40201 ; BR
44001 ; CACHEA
44001 ; CACHED
44000 ; MAP
40000 ; VM
44004 ; IFUM
142604 ; LDR
152600 ; MDATA
152600 ; MADDR (see HWAlwaysUpdate in D1Res.bcpl)
52600 ; DMUX (read-only unless DMuxSelect eq DChecked)
42400 ; DHIST
43000 ; VH
41000 ; MD
40200 ; TASKN
40200 ; DEVICE
40000 ; STKX
153322 ; MSTAT
152700 ; $ABS
40000 ; ROW
40200 ; BRX
.AltMForms:
PrintABSOL ; $ABSOLUTE
PrintTLINK ; TPC
PrintTLINK ; TLINK
PrintTLINK ; OLINK
PrintIM ; IMBD
PrintIM ; IM
PrintIM ; IMX
PrintALUFM ; ALUFM
PrintWrdByt ; T
MDatatoCSS ; RBASE
PrintTIOA ; TIOA
PrintMEMBASE ; MEMBASE
PrintWrdByt ; RM
PrintWrdByt ; STK
PrintPIPE ; PIPE
PrintBR ; BR
PrintCACHEA ; CACHEA
PrintWrdByt ; CACHED
PrintMAP ; MAP
PrintWrdByt ; VM
PrintIFUM ; IFUM
PrintIM ; LDR
MDatatoCSS ; MDATA
PrintMADDR ; MADDR
PrintDMUX ; DMUX
MDatatoCSS ; DHIST
MDatatoCSS ; VH
PrintWrdByt ; MD
MDatatoCSS ; TASKN
MDatatoCSS ; DEVICE
PrintWrdByt ; STKX
PrintMSTAT ; MSTAT
PrintWrdByt ; $ABS
PrintROW ; ROW
PrintBR ; BRX
.AltMInput:
BadAltIn ; $ABSOLUTE
BadAltIn ; TPC
BadAltIn ; TLINK
BadAltIn ; OLINK
InstructionIn ; IMBD
InstructionIn ; IM
InstructionIn ; IMX
BadAltIn ; ALUFM
WrdBytIn ; T
BadAltIn ; RBASE
BadAltIn ; TIOA
BadAltIn ; MEMBASE
WrdBytIn ; RM
WrdBytIn ; STK
BadAltIn ; PIPE
BadAltIn ; BR
BadAltIn ; CACHEA
WrdBytIn ; CACHED
BadAltIn ; MAP
WrdBytIn ; VM
BadAltIn ; IFUM
InstructionIn ; LDR
BadAltIn ; MDATA
BadAltIn ; MADDR
WrdBytIn ; DMUX
BadAltIn ; DHIST
BadAltIn ; VH
WrdBytIn ; MD
BadAltIn ; TASKN
BadAltIn ; DEVICE
WrdBytIn ; STKX
BadAltIn ; MSTAT
WrdBytIn ; $ABS
BadAltIn ; ROW
BadAltIn ; BRX
CPREGn: .txt "CPREG"
MIRn: .txt "MIR"
IMOUTn: .txt "IMOUT"
Qn: .txt "Q"
CNTn: .txt "CNT"
SHCn: .txt "SHC"
MEMBXn: .txt "MEMBX"
STKPn: .txt "STKP"
TASKn: .txt "TASK"
PROCSRNn: .txt "PROCSRN"
MCRn: .txt "MCR"
CONFIGn: .txt "CONFIG"
PCXn: .txt "PCX"
INSSETn: .txt "INSSET"
TESTSYNn: .txt "TESTSYN"
STROBEn: .txt "STROBE"
D1OUTn: .txt "D1OUT"
UPTIMEn: .txt "UPTIME"
TGLITCHn: .txt "TGLITCH"
EVCNTAn: .txt "EVCNTA"
EVCNTBn: .txt "EVCNTB"
AATOVAn: .txt "AATOVA"
ESTATn: .txt "ESTAT"
ABSOLn: .txt "$ABSOLUTE"
TPCn: .txt "TPC"
TLINKn: .txt "TLINK"
OLINKn: .txt "OLINK"
IMBDn: .txt "IMBD"
IMn: .txt "IM"
IMXn: .txt "IMX"
ALUFMn: .txt "ALUFM"
Tn: .txt "T"
RBASEn: .txt "RBASE"
TIOAn: .txt "TIOA"
MEMBASEn: .txt "MEMBASE"
RMn: .txt "RM"
STKn: .txt "STK"
PIPEn: .txt "PIPE"
BRn: .txt "BR"
CACHEAn: .txt "CACHEA"
CACHEDn: .txt "CACHED"
MAPn: .txt "MAP"
VMn: .txt "VM"
IFUMn: .txt "IFUM"
LDRn: .txt "LDR"
MDATAn: .txt "MDATA"
MADDRn: .txt "MADDR"
DMUXn: .txt "DMUX"
DHISTn: .txt "DHIST" ; Only show in right-most display col.
VHn: .txt "VH" ; Name short to fit in middle display col.
MDn: .txt "MD"
TASKNn: .txt "TASKN"
DEVICEn: .txt "DEVICE"
STKXn: .txt "STKX"
MSTATn: .txt "MSTAT"
ABSn: .txt "$ABS"
ROWn: .txt "ROW"
BRXn: .txt "BRX"
; Format tables are:
; Word 0: if positive, number of word-pairs
; if negative, number of extensions followed by self-relative
; pointers to format tables with word 0 positive.
; Words 1 and 2: First bit and number of bits
; Words 3 and 4, etc. same as words 1 and 2
; The bits selected by a pair are printed in radix followed by a blank
; then the next group, etc.
; Going backward from the pointer:
; Word -1: MemX used in SearchBlocks DisplayMode (-1 if unmeaningful)
; Word -2: lv Procedure for symbolic DisplayMode (0 if unmeaningful)
0
IMx
FormIMAddr:
1
0
20
0
-1
FormIMv:
5
42 ; PE1631 and PE015
2
62 ; Undef and Emul
2
64 ; Absolute address
14
0 ; IM[0:20]
21
21 ; IM[21:41]
21
0
-1
FormIMa:
3
42 ; PE1631 and PE015
2
0 ; IMX[0:20]
21
21 ; IMX[21:41]
21
0
TASKNx
FormTASK:
1
0
4
0
DEVICEx
FormTIOA:
1
0
10
0
BRx
FormMEMBASE:
1
0
5
0
-1
Form32: 2
0
20
20
20
0
-1
FormDH: 3
40
14
0
20
20
20
0
-1
FormMAP:
3
12 ; MapDirtyb, MapParity, MapPE
3
15 ; Ref, WP, Dirty
3
20 ; RP[0:15]
20
0
-1
FormBRX:
FormBR:
2
4
14
20
20
0
-1
FormCACHEA:
2
0 ; Dirty, vacant, wp, beingloaded
4
7 ; VA[7:21] **modified by D1CONFIG**
17
0
-1
FormIFUM:
4
21 ; PE0ok, PE1ok, PE2ok
3
5 ; 2A, IFaddr
13
20 ; Sign
1
24 ; Length', RBaseB', MemB, TPause', TJump'
14
0
-1
FormINSSET:
2
0 ; IdCnt
3
3 ; InsSet
2
0
-1
FormSTROBE:
2
0 ; Data
11
12 ; Address
3
0
-1
FormD1OUT:
3
11 ; Strobe
1
0 ; Data
11
12 ; Address
3
0
-1
FormSTKP:
2
10 ; StkOvf and StkUnd
2
0 ; STKP
10
0
ABSOLx ; Intended for ZSUBPC and ZPC
FormABS:
0
0
20
MPrintUPTIME ; Symbolic display mode is default
-1
FormUPTIME:
6 ; 6 numeric bytes in hex if numeric printout
0
10
10
10
20
10
30
10
40
10
50
10
MPrintMSTAT
-1
FormMSTAT:
4
0
10
10
10
20
10
30
10
FormPIPE:
-3
Form32-.
Form32-.
Form32-.
FormROW:
-5
FormCACHEA-.
FormCACHEA-.
FormCACHEA-.
FormCACHEA-.
FormVNV-.
0
-1
FormVNV:
2
0
2
2
2
.end