perm filename SEMBLK.STN[NEW,AIL] blob
sn#408228 filedate 1979-01-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00045 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00004 00002 VARIABLE
C00007 00003 ITEM
C00012 00004 DEFINE NAME
C00015 00005 INTEGER CONSTANT
C00017 00006 STRING CONSTANT
C00020 00007 DEFINE PARAMETER
C00022 00008 CASEC
C00024 00009 FORC
C00026 00010 FORC LOOP VARIABLE
C00030 00011 WHILEC
C00032 00012 FORLC
C00034 00013 ARRAY CALCULATOR INFO BLK
C00036 00014 ARRAYS
C00039 00015 INDEXED TEMP
C00042 00016 STRING AND ARITH TEMPS
C00045 00017 BNDBLK (if # of dims ≤5)
C00048 00018 INDEXED TEMP IF WE KNOW EVERYTHING
C00050 00019 PROC. DESCR. (PD)
C00053 00020 ADCONS
C00055 00021 BYTE EXPRESSIONS
C00057 00022 PROC. DESCR. ADDRESS (PDA),,0
C00059 00023 DISPLAY TEMP
C00061 00024 SPROOT SEMBLK
C00063 00025 BLOCK FOR CALLING A PROC.
C00066 00026 PROCEDURE (USER DEFINED)
C00069 00027 BUILT-IN PROCEDURE
C00072 00028 BLOCK
C00075 00029 PROCEDURE BLOCK # 2
C00078 00030 PROCEDURE FORMAL PARAMETER
C00081 00031 FIELD SEMBLK
C00083 00032 CASE SEMBLK
C00086 00033 BUCKET SEMBLK
C00089 00034 RESERVED WORDS
C00091 00035 SECOND BLOCK SEMBLK
C00094 00036 RECORD CLASS
C00096 00037 RECORD CLASS (second semblk)
C00098 00038 SUBFIELD INDEXED TEMP
C00100 00039 RECORD CLASS LISTS
C00102 00040 FOR STATEMENT
C00104 00041 MESSAGE BLOCK
C00106 00042 SLS SYMBOL
C00109 00043 SLS SIMPLE
C00111 00044 SLS ARRAY
C00113 00045 SLS PROCEDURE
C00116 ENDMK
C⊗;
VARIABLE
|-----------------------|-----------------------|
%TLINK: | unused | bucket pointer |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | string number | character count |
|-----------------------|-----------------------|
| Byte pointer for Ascii for pname |
|-----------------------|-----------------------|
$TBITS: | type bits |
|-----------------------|-----------------------|
$SBITS: | semantic bits | displ lev |lex lev|
|-----------------------|-----------------------|
$ADR |fixup for second word | fixup (1'st word for |
| for strings | for strings) |
|-----------------------|-----------------------|
$ACNO: | ←← pd semblk for disp.| # of AC in which |
| lev. if label *[1]| variable is loaded |
|-----------------------|-----------------------|
$VAL: | not used |
|-----------------------|-----------------------|
$VAL2: | global # | |
|-----------------------|-----------------------|
%RVARB: | ←prev. ident on this | →→ next ident on this |
| varb ring | varb ring |
|-----------------------|-----------------------|
%RSTR: | ←prev semblk with this| →→ next semblk with |
| pname | this pname |
|-----------------------|-----------------------|
*[1] only if non-simple procedure. If pointer variable, →→ to
record class.
ITEM
|-----------------------|-----------------------|
%TLINK: | unused | bucket pointer→ |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | string number | character count |
|-----------------------|-----------------------|
| Byte pointer for Ascii for pname |
|-----------------------|-----------------------|
$TBITS: | item and types |
|-----------------------|-----------------------|
$SBITS: | semantic bits | displ lev |lex lev|
|-----------------------|-----------------------|
$ADR | | |
| | |
|-----------------------|-----------------------|
$ACNO: | | |
| | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | integer const |
| | semblk→ |
|-----------------------|-----------------------|
%RVARB: | ←prev. ident on this | →→ next ident on this |
| varb ring | varb ring |
|-----------------------|-----------------------|
%RSTR: | ←prev semblk with this| →→ next semblk with |
| pname | this pname |
|-----------------------|-----------------------|
DEFINE NAME
|-----------------------|-----------------------|
%TLINK: | Macro body string | bucket pointer→ |
%TBUCK: | →Const. semantics | |
|-----------------------|-----------------------|
$PNAME: | string number | character count |
|-----------------------|-----------------------|
| Byte pointer for Ascii for pname |
|-----------------------|-----------------------|
$TBITS: | define |
|-----------------------|-----------------------|
$SBITS: | | |lex lev |
|-----------------------|-----------------------|
$ADR | | old varb |
| | while params scanned |
|-----------------------|-----------------------|
$ACNO: | 1st parameter of param list→ |
| | |
|-----------------------|-----------------------|
$VAL: | # of parameters | # of parameters |
|-----------------------|-----------------------|
VAL2: | | |
| | |
|-----------------------|-----------------------|
%RVARB: | ←prev. ident on this | →→ next ident on this |
| varb ring | varb ring |
|-----------------------|-----------------------|
%RSTR: | ←prev semblk with this| →→ next semblk with |
| pname | this pname |
|-----------------------|-----------------------|
$VAL has duplicate entries bacause while scanning a macro body
of a redefinition, the old definition still holds. The right
half is used to store the newly redefined macro body's # of
parameters while the left half is used for the old def.
(very short-lived).
INTEGER CONSTANT
|-----------------------|-----------------------|
%TLINK: | unused | arith→ |
%TBUCK: | | const. bucket ptr. |
|-----------------------|-----------------------|
$PNAME: | not used | not used |
|-----------------------|-----------------------|
| not used |
|-----------------------|-----------------------|
$TBITS: | const | {flotng |
| | integer} |
|-----------------------|-----------------------|
$SBITS: | semantic bits | displ lev |lex lev|
|-----------------------|-----------------------|
$ADR | not used | fixup - standard |
|-----------------------|-----------------------|
$ACNO: | not used | Standard |
|-----------------------|-----------------------|
$VAL: | Value of constant |
|-----------------------|-----------------------|
$VAL2: | Not used |
|-----------------------|-----------------------|
%RVARB: | ←prev. ident on this | →→ next ident on this |
| varb ring (constant ring) varb ring |
|-----------------------|-----------------------|
%RSTR: | not used
|-----------------------|-----------------------|
STRING CONSTANT
|-----------------------|-----------------------|
%TLINK: | unused | strcon bucket pointer |
%TBUCK: | | (unless macro body or |
| | special delimiters) |
|-----------------------|-----------------------|
$PNAME: | string number | character count |
|-----------------------|-----------------------|
| Byte pointer for Ascii for pname |
|-----------------------|-----------------------|
$TBITS: | cnst + string |
|-----------------------|-----------------------|
$SBITS: | semantic bits | 0 | 0 |
|-----------------------|-----------------------|
$ADR | second word fixup | first word fixup |
|-----------------------|-----------------------|
$ACNO: | not used | standard |
|-----------------------|-----------------------|
$VAL: | | fixup for 1st Ascii |
| | word for preload |
|-----------------------|-----------------------|
$VAL2: | cnt - #strins - #remops *[1] |
|-----------------------|-----------------------|
%RVARB: | ←prev. (CONSTR ring links) next →→ |
|-----------------------|-----------------------|
%RSTR: | ←prev semblk with this| →→ next semblk with |
| pname | this pname |
|-----------------------|-----------------------|
*[1] = 0 implies may be deleted
DEFINE PARAMETER
|-----------------------|-----------------------|
LINK: | unused | unused |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | string number | character count |
|-----------------------|-----------------------|
| Byte pointer for Ascii for pname |
|-----------------------|-----------------------|
$TBITS: | formal, define |
|-----------------------|-----------------------|
$SBITS: | | |lex lev|
|-----------------------|-----------------------|
$ADR | | |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | parameter |
| | number |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | ←previous | → next |
| define param | define param |
|-----------------------|-----------------------|
%RSTR: | ←prev semblk with this| →→ next semblk with |
| pname | this pname |
|-----------------------|-----------------------|
CASEC
|-----------------------|-----------------------|
%TLINK | →semblk of casec | |
%TBUCK: | to be executed | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | define |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR | | old varb while |
| | scanning casecs |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | casec number |
|-----------------------|-----------------------|
RVARB: | | |
|-----------------------|-----------------------|
%RSTR | | |
|-----------------------|-----------------------|
FORC
|-----------------------|-----------------------|
%TLINK: | →semblk of forc body | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | loop variable step value |
|-----------------------|-----------------------|
| loop variable final value |
|-----------------------|-----------------------|
$TBITS: | define |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR | | old varb while |
| | scanning body |
|-----------------------|-----------------------|
$ACNO: | FORC parameter semblk |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | initial loop variable value and |
| current loop variable value |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
FORC LOOP VARIABLE
STRING CONSTANT--LIKE A MACRO-ACTUAL PARAMETER
|-----------------------|-----------------------|
%TLINK: | | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | cnst | string |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR | | |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
WHILEC
|-----------------------|-----------------------|
%TLINK: | →semblk of whilec | |
%TBUCK: | body | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | define |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | old varb while |
| | scanning body |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
FORLC
|-----------------------|-----------------------|
%TLINK: | →semblk of FORLC | |
%TBUCK: | body | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | define |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | old varb while |
| | scanning body |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | addr parameter semblk |
|-----------------------|-----------------------|
$VAL2: | →ring of list of actual parameters |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
ARRAY CALCULATOR INFO BLK
(IDXBLK)
|-----------------------|-----------------------|
%TLINK: | ←partial calc's | array→ |
%TBUCK: | ( ) | |
|-----------------------|-----------------------|
DIMPRC: | # of dimensions processed so far |
|-----------------------|-----------------------|
| | BNDBLK entry of |
| | current index |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | |
|-----------------------|-----------------------|
NUMDIM: | # of dimensions |
|-----------------------|-----------------------|
$VAL: | current displacement due to constant indices |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
ARRAYS
|-----------------------|-----------------------|
%TLINK: | | |
%TBUCK: | ←BNDBLK | standard |
|-----------------------|-----------------------|
$PNAME: | | |
|------------------- standard -----------------|
| | |
|-----------------------|-----------------------|
$TBITS: | SBSCRP + ( salp ) + types |
| ( own ) |
|-----------------------|-----------------------|
$SBITS: | standard |
|-----------------------|-----------------------|
TOTDSP: | total displacement | fixup-standard |
| (i.e. [000] loc. if | |
| know (builtin) | |
|-----------------------|-----------------------|
NUMDIM: | →RCLASS | standard |
|-----------------------|-----------------------|
ARLOC: | -1 if string | addr of array desc. |
| 0 otherwise | if know (builtin) |
|-----------------------|-----------------------|
$VAL2: | Global # if global | integr const |
| | semblk if item |
|-----------------------|-----------------------|
%RVARB: | ←standard→ |
|-----------------------|-----------------------|
%RSTR: | ←standard→ |
|-----------------------|-----------------------|
INDEXED TEMP
|-----------------------|-----------------------|
%TLINK: | ←array | next temp on |
%TBUCK: | | RCTEMP→ |
|-----------------------|-----------------------|
$PNAME: | temp ID # 1 (if cortmp) |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | reloc + types |
|-----------------------|-----------------------|
$SBITS: | indxed + ptnac |
| artemp + inuse |
|-----------------------|-----------------------|
$ADR | | fixup if AC stored |
| | before used as index |
|-----------------------|-----------------------|
$ACNO: | →record class if that | AC # of calculated |
| | index |
|-----------------------|-----------------------|
$VAL: | total displacement due to |
| constant indices + [000] loc if known |
|-----------------------|-----------------------|
$VAL2: | →array descriptor | ≠0 for indexed |
| semblk if need | subfield |
|-----------------------|-----------------------|
%RVARB: | | |
|----------------- T Temp linkage --------------|
%RSTR: | | |
|-----------------------|-----------------------|
STRING AND ARITH TEMPS
|-----------------------|-----------------------|
%TLINK: | | next temp on |
%TBUCK: | | RCTEMP → |
|-----------------------|-----------------------|
$PNAME: | temp ID # 1 (unique)* |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | types |
|-----------------------|-----------------------|
$SBITS: | |artemp| |cortmp| |
| | | + | inac | |
| |sttemp| |acsave| |
|-----------------------|-----------------------|
$ADR | | fixup for arith temps |
|-----------------------|-----------------------|
$ACNO: | for records, | AC # for arith temp, |
| → class ,c | string temps |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | ttemp linkage |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
*if so then abs val is id no and temp is "avail", even
though the inuse bit is on
BNDBLK (if # of dims ≤5)
(after ARRDEC)
|-----------------------|-----------------------|
%TLINK: | Bits describing | total size this |
%TBUCK: | dimension | dimension |
|-----------------------|-----------------------|
$PNAME: | Lower bound | π this dimension |
| this dimension | |
|-----------------------|-----------------------|
| ditto |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | ditto |
|-----------------------|-----------------------|
$ADR: | | |
|-----------------------|-----------------------|
$ACNO: | ditto |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | ditto |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
NDIMSD: | # dims declared | |
|-----------------------|-----------------------|
INDEXED TEMP IF WE KNOW EVERYTHING
(FIXARR)
|-----------------------|-----------------------|
%TLINK: | ←array | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$PNAME: | 0 | type |
|-----------------------|-----------------------|
$SBITS: |inuse, artemp, fixarr | |
|-----------------------|-----------------------|
$ADR: | | address |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
PROC. DESCR. (PD)
|-----------------------|-----------------------|
%TLINK: | ←PDA,,0 | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | fixup used for pname |
| | when emitting PD |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | -1 if allocated | fixup if not allocat. |
| 0 otherwise | address if allocat. |
|-----------------------|-----------------------|
$ACNO: | PCNT at end of | JRST exit |
| Markstack loop | & loc |
|-----------------------|-----------------------|
$VAL: | (BAIL) COORD | proc. formal param |
| AT PRDEC | fixup |
|-----------------------|-----------------------|
$VAL2: | (BAIL) ADDR OF | local variables fixup |
| LAST WORD OF CODE | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
ADCONS
|-----------------------|-----------------------|
%TLINK: | ←semantics of thing | |
%TBUCK: | being described | |
|-----------------------|-----------------------|
$PNAME: | Pname (or templ #) from object semantics |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | integr |
|-----------------------|-----------------------|
$SBITS: | $SBITS from object semantics |
|-----------------------|-----------------------|
$ADR: | type of object | fixups |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | ←ADCON RING (Adrtab)→ |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
BYTE EXPRESSIONS
|-----------------------|-----------------------|
%TLINK: | | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | ptr at blk of |
| | address part |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | ptr at length semblk |
|-----------------------|-----------------------|
$VAL2: | | ptr at right bit |
| | semblk |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
PROC. DESCR. ADDRESS (PDA),,0
|-----------------------|-----------------------|
%TLINK: | ←PD | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | adr of const |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
DISPLAY TEMP
|-----------------------|-----------------------|
%TLINK: | | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | 0 | integr |
|-----------------------|-----------------------|
$SBITS: | prac + inac + distmp | 0 |
|-----------------------|-----------------------|
$ADR: | | display level |
|-----------------------|-----------------------|
$ACNO: | | AC # |
|-----------------------|-----------------------|
$VAL: | -1 (anding mask)0 |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | ←previous distmp | next distmp→ |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
SPROOT SEMBLK
|-----------------------|-----------------------|
%TLINK: | | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | forked proc semblk→ |
%RVARB: | | -1 if sprout (apply) |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
BLOCK FOR CALLING A PROC.
|-----------------------|-----------------------|
%TLINK: | ←procedure semantics | next formal param |
%TBUCK: | | if not built-in→ |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | T-bits from proc. semblk |
|-----------------------|-----------------------|
$SBITS: | S-bits from proc. semblk |
|-----------------------|-----------------------|
$ADR: | FTAPRM Stack pointer at RDYCAL |
|-----------------------|-----------------------|
$ACNO: | | CHAIN for value |
| | pntvar TEMPS. |
|-----------------------|-----------------------|
$VAL: | # of string elements | # of non-string |
| to be removed after | elements to be removed|
| call | after call |
|-----------------------|-----------------------|
$VAL2: | Byte ptr. for next param if Built-in |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
PROCEDURE (USER DEFINED)
|-----------------------|-----------------------|
%TLINK: | 2nd blk of proc. | standard |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | standard |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
| FORWARD RECUR |
$TBITS: | PROCED + INPROG + types |
| FORIRN |
|-----------------------|-----------------------|
$SBITS: | RTNDON + levels |
| ANYTYP | |
|-----------------------|-----------------------|
$ADR: | fixup for jump past | ADR (not FORWRD) |
| stack-adjust | fixup (FORWRD! INPROG)|
| (sometimes) | |
|-----------------------|-----------------------|
$ACNO: | record type | fixup for JRST EXIT- |
| | addr for " " after |
| | PRUP |
|-----------------------|-----------------------|
$VAL: | SPROUT DEFAULTS | PD semblk→ |
|-----------------------|-----------------------|
$VAL2: | PCNT at prdec. | |
|-----------------------|-----------------------|
%RVARB: | ←standard→ |
|-----------------------|-----------------------|
%RSTR: | ←standard→ |
|-----------------------|-----------------------|
BUILT-IN PROCEDURE
|-----------------------|-----------------------|
%TLINK: | | standard |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | 0 | # chars |
|-----------------------|-----------------------|
| point 7, . + 8 |
|-----------------------|-----------------------|
$TBITS: | own + Biltin + types + if fwynavr then the |
| ext request goes out as foot instead of foo |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | fixups |
|-----------------------|-----------------------| )
$ACNO: | | | )
|-----------------------|-----------------------| )
$VAL: | | | ) 6-bit param
|-----------------------|-----------------------| ) descriptors -
$VAL2: | <used during call | for ptr.> | ) 0 terminates
|-----------------------|-----------------------| ) high order bit = 1
%RVARB: | ←Previous Biltin | Next Biltin→ | ) →value is defaultable
|-----------------------|-----------------------| )
%RSTR: | ASCII for Pname Starts here |
|-----------------------|-----------------------|
BLOCK
(second block on next page)
|-----------------------|-----------------------|
%TLINK: | ptr at second block | ident. bucket of this |
%TBUCK: | semblk (if any) | block or cpnd. st |
|-----------------------|-----------------------|
$PNAME: | | |
|--------- Name of block ----------|
| (if any) |
|-----------------------|-----------------------|
$TBITS: | AC project mask | ? 0 |
|-----------------------|-----------------------|
$SBITS: | fixup for a later | levels if not |
| XCALL <ARREL> | compound state |
|-----------------------|-----------------------|
$ADR: | old TTOP if not | old VARB if not |
| compound state | compound state |
|-----------------------|-----------------------|
$ACNO: | | kill set semblk |
|-----------------------|-----------------------|
$VAL: | the "OR" of all symbols def. in this Block |
|-----------------------|-----------------------|
$VAL2: | first word of cods | DDT level |
|-----------------------|-----------------------|
%RVARB: | 0 | first ident on this |
| | blocks VARB RING |
| | (if any) → |
|-----------------------|-----------------------|
%RSTR: | ← standard (if name) → |
|-----------------------|-----------------------|
PROCEDURE BLOCK # 2
|-----------------------|-----------------------|
%TLINK: | ← first formal param | TTEMP while an inner |
%TBUCK: | | proc is compiled → |
|-----------------------|-----------------------|
%SAVET: | ← old TTOP at PRDEC | old TPROC at PRDEC → |
|-----------------------|-----------------------|
$NPRMS: | # arith. params + 1 | 2* # string params |
|-----------------------|-----------------------|
$BLKLP: | Index into BLKLIS (i.e. BLKIDX) at PRDEC |
|-----------------------|-----------------------|
$SBITS: | # value LONG params | addr of JRST around |
| (extra words on stack)| proc |
|-----------------------|-----------------------|
$ADR: | | |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | -1 if TOPLEV at PRDEC |
|-----------------------|-----------------------|
$VAL2: | rsce rec class 0 | DDT level for this |
| | proc |
|-----------------------|-----------------------|
%RVARB: | RCTEMP while inner | header of chain of |
| proc is compiled | subfield temps |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
PROCEDURE FORMAL PARAMETER
|-----------------------|-----------------------|
%TLINK: | | standard |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|---------------- standard ---------------|
| | |
|-----------------------|-----------------------|
$TBITS: | [value ] |
| [ ] + types |
| [refrnc] |
|-----------------------|-----------------------|
$SBITS: | standard |
|-----------------------|-----------------------|
$ADR: | | stack displacement |
| | from ret. addr- |
| | this param |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | → semblk for default |
| | value (vary) for |
| | value param |
|-----------------------|-----------------------|
%RVARB: | ← previous formal | next formal → |
|-----------------------|-----------------------|
%RSTR: | ← standard → |
|-----------------------|-----------------------|
FIELD SEMBLK
|-----------------------|-----------------------|
%TLINK: | | |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | byte pointer |
| | (if has one) → |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | 0 → word 1 → Lh 2 → Rh 3 → byte |
|-----------------------|-----------------------|
$VAL2: | | ref semblk |
|-----------------------|-----------------------|
%RVARB: | ptr to right bit | ptr to length semblk |
| semblk | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
CASE SEMBLK
|-----------------------|-----------------------|
%TLINK: | old CASTAK |
%TBUCK: | |
|-----------------------|-----------------------|
$PNAME: | | |
|------- standard (if block named) -------|
| | |
|-----------------------|-----------------------|
$TBITS: | Tbits if expr. case |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | fixup for compare | JRST out fixups |
|-----------------------|-----------------------|
$ACNO: | ELSE addr if any | AC # if expr case |
|-----------------------|-----------------------|
$VAL: | lowest # seen | highest # seen |
|-----------------------|-----------------------|
$VAL2: | -1 explicit numbering | 0 no explicit numbers |
| +1 implicit numbering | yet for this case |
| 0 not known yet |≠0 at least expl. numb.|
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | ← standard (if named) → |
|-----------------------|-----------------------|
BUCKET SEMBLK
|-----------------------|-----------------------|
%TLINK: | ←----o | o----→ | )
%TBUCK: | | | )
|-----------------------|-----------------------| )
$PNAME: | ←----o | o----→ | )
|-----------------------|-----------------------| )
| | | )
|-----------------------|-----------------------| )
$TBITS: | | | ) To lists of
|-----------------------|-----------------------| ) identifiers,
$SBITS: | | | ) arithmetic consts,
|-----------------------|-----------------------| ) or string consts.
$ADR: | | | )
|-----------------------|-----------------------| )
$ACNO: | | | )
|-----------------------|-----------------------| )
$VAL: | | | )
|-----------------------|-----------------------| )
$VAL2: | ←----o | o----→ | )
|-----------------------|-----------------------|
%RVARB: | ←----o | o----→ |
|-----------------------|-----------------------|
BLKLEN-1| 0 | previous bucket |
| | semblk → |
|-----------------------|-----------------------|
RESERVED WORDS
|-----------------------|-----------------------|
%TLINK: | ← previous r. word | standard |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | | # of chars |
|-----------------------|-----------------------|
| Point 7, . + 2 |
|-----------------------|-----------------------|
$TBITS: | Res + CLSIDX | token # |
|-----------------------|-----------------------|
$SBITS: | ASCIZ for name starts here |
|-----------------------|-----------------------|
$ADR: | | |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|---------- block is |
$VAL: | | only 5 |
|-----------------------|---------- (+ more if |
$VAL2: | | name> 5 |
|-----------------------|---------- chars) words|
%RVARB: | | long |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
SECOND BLOCK SEMBLK
(may not be allocated, but usually is)
|-----------------------|-----------------------|
%TLINK: |←first semblk | →second semblk of |
%TBUCK: | | enclosing block |
|-----------------------|-----------------------|
$PNAME: | | page # of BEGIN |
|-----------------------|-----------------------|
| ASCII for line # of BEGIN |
|-----------------------|-----------------------|
$TBITS: | | |
|-----------------------|-----------------------|
$SBITS: | | |
|-----------------------|-----------------------|
$ADR: | | FWA code (BAIL) |
|-----------------------|-----------------------|
$ACNO: | QSTACK OWNER FOR CLEANUPS |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | (BAIL) ADDR OF (BAIL) |
| LAST WORD OF CODE | COORD AT BEGIN |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
rh($ADR) is real first word address, including any JRSTs around
procedures declared inside the block. lh($VAL2) of first
semblk is updated to omit the JRSTs.
RECORD CLASS
|-----------------------|-----------------------|
%TLINK: | →second semblk | standard |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | standard |
|-----------------------|-----------------------|
| standard |
|-----------------------|-----------------------|
$TBITS: | PNTVAR ! SHORT |
|-----------------------|-----------------------|
$SBITS: | standard |
|-----------------------|-----------------------|
$ADR: | 0 | addr of descriptor |
|-----------------------|-----------------------|
$ACNO: | |
|-----------------------|-----------------------|
$VAL: | | 0 |
|-----------------------|-----------------------|
$VAL2: |PCNT at PRDEC | |
|-----------------------|-----------------------|
%RVARB: | standard |
|-----------------------|-----------------------|
%RSTR: | standard |
|-----------------------|-----------------------|
RECORD CLASS (second semblk)
|-----------------------|-----------------------|
%TLINK: | ←first subfield | holder for ttemp |
%TBUCK: | | |
|-----------------------|-----------------------|
%SAVET: | ←old ttop at PRDEC | →old tproc at PRDEC |
|-----------------------|-----------------------|
$NPRMS: | number of fields |
|-----------------------|-----------------------|
$BLKLP: | index into BLKLIS at prdec(of procedure) |
|-----------------------|-----------------------|
$SBITS: | |addr of jrst around proc|
|-----------------------|-----------------------|
$ADR: | | |
|-----------------------|-----------------------|
$ACNO: | |
|-----------------------|-----------------------|
$VAL: | -1 if toplev at prdec |
|-----------------------|-----------------------|
$VAL2: |←handler proc semblk | ddt level |
|-----------------------|-----------------------|
%RVARB: | |
|-----------------------|-----------------------|
%RSTR: | |
|-----------------------|-----------------------|
SUBFIELD INDEXED TEMP
|-----------------------|-----------------------|
%TLINK: | ←parent field record | →TTEMP list |
%TBUCK: | | |
|-----------------------|-----------------------|
$pname: | temp id # |
|-----------------------|-----------------------|
| |
|-----------------------|-----------------------|
$TBITS: | types |
|-----------------------|-----------------------|
$SBITS: | PTRAC INDXED INUSE | |
|-----------------------|-----------------------|
$ADR: | | standard for indexed temp|
|-----------------------|-----------------------|
$ACNO: | ←class id, if pntvar | ac # |
| ←dependent temp [1] | |
|-----------------------|-----------------------|
$VAL: | constant index |
|-----------------------|-----------------------|
$VAL2: | | ≠0 if a subfield temp |
|-----------------------|-----------------------|
%RVARB: | subfield temp chain |
|-----------------------|-----------------------|
%RSTR: | |
|-----------------------|-----------------------|
[1] If string subfield indexed temp, then
$ACNO may point to a record temp which must be remopped
whenever this temp is.
RECORD CLASS LISTS
|-----------------------|-----------------------|
%TLINK: | |
%TBUCK: | | |
|-----------------------|-----------------------|
$pname: | | count |
|-----------------------|-----------------------|
| byte pntr to first |
|-----------------------|-----------------------|
$TBITS: | PNTVAR!SHORT!LSTBIT |
|-----------------------|-----------------------|
$SBITS: | byte pntr to last |
|-----------------------|-----------------------|
$ADR: | →class id 1 | →class id 2 |
|-----------------------|-----------------------|
$ACNO: | →class id 3 | →class id 4 |
|-----------------------|-----------------------|
$VAL: | 5 | 6 |
|-----------------------|-----------------------|
$VAL2: | 7 | 8 |
|-----------------------|-----------------------|
%RVARB: | 9 | 10 |
|-----------------------|-----------------------|
%RSTR: | 11 | 12 |
|-----------------------|-----------------------|
FOR STATEMENT
|-----------------------|-----------------------|
%TLINK: | | |
%TBUCK: | | |
|-----------------------|-----------------------|
$DATA: | fixup for jumpout loc | addr to Jump Back to |
|-----------------------|-----------------------|
$DATA2: | Bits word | |
|-----------------------|-----------------------|
$DATA3: | fixup for done | addr of stavt for |
| | coroutine |
|-----------------------|-----------------------|
$DATA4: | ptr to step | ptr to index |
|-----------------------|-----------------------|
$ADR: | ac # for coroutine | fixup for statement |
|-----------------------|-----------------------|
$ACNO: | continue fixup | ac # for index |
|-----------------------|-----------------------|
$VAL: | level of for loop | 0 |
|-----------------------|-----------------------|
$VAL2: | → temp semblk | fixup for loope |
|-----------------------|-----------------------|
%RVARB: | 0 | for each variable |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
MESSAGE BLOCK
|-----------------------|-----------------------|
0PNTR: | | → next entry |
|-----------------------|-----------------------|
1BITS: | bits about message | job # for source |
|-----------------------|-----------------------|
2UNIQUE:| message I.D. |
|-----------------------|-----------------------|
| | |
31SOURCE|------------source name in chars.--------------|
| | |
|-----------------------|-----------------------|
| | |
51DEST: |-------------dest name in chars.---------------|
| | |
|-----------------------|-----------------------|
| | |
71NDME: |-----------procedure name in chars.------------|
| | |
|-----------------------|-----------------------|
11PARCNT| | |
,PARSLT:| # params used to date |
|-----------------------|-----------------------|
| | |
|-----------------------|-----------------------|
[____________3 words each for params____________]
SLS SYMBOL
|-----------------------|-----------------------|
%TLINK: | PNAME code | length: 6 words reg. |
%TBUCK: | | etc.--russel-you fill |
|-----------------------|-----------------------|
$PNAME: | PRG | BLK |
|-----------------------|-----------------------|
| TBITS |
|-----------------------|-----------------------|
$TBITS: | TOTDSP primary value VAL for MACROS |
| (Adr usually) |
|-----------------------|-----------------------|
$SBITS: | SBITS | level |
|-----------------------|-----------------------|
$ADR: | TLINK Val | RVARB val ( ) |
|-----------------------|-----------------------|
X 1: | text addr.# dimensions| string-adjust addrs. |
|-----------------------|-----------------------|
X 2: | exit addr | Toplev bit |
| -1 if string arrang. | first date word addr. |
|-----------------------|-----------------------|
X 3: | | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
RUSSELL: THIS ONE NEEDS LOTS OF ADDITIONS--I HAD TROUBLE WITH YOUR
HANDWRITING.
SLS SIMPLE
|-----------------------|-----------------------|
%TLINK: | PNAME PA | LENGTH |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | PRG | BLK |
|-----------------------|-----------------------|
| TBITS |
|-----------------------|-----------------------|
$TBITS: | primary value |
|-----------------------|-----------------------|
$SBITS: | SBITS | level |
|-----------------------|-----------------------|
$ADR: | TLINK VAL | RVARB VAL |
|-----------------------|-----------------------|
$ACNO: | | |
|-----------------------|-----------------------|
$VAL: | | |
|-----------------------|-----------------------|
$VAL2: | | |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
SLS ARRAY
|-----------------------|-----------------------|
%TLINK: | PNAME PD | length |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | PRG | BLK |
|-----------------------|-----------------------|
| TBITS |
|-----------------------|-----------------------|
$TBITS: | TOTDSP primary | Value (address) |
|-----------------------|-----------------------|
$SBITS: | SBITS | |level |
|-----------------------|-----------------------|
$ADR: | Think? | RVARB |
|-----------------------|-----------------------|
$ACNO: | # dim | |
|-----------------------|-----------------------|
$VAL: | -1 if string | first data word addr |
|-----------------------|-----------------------|
$VAL2: | BNDBLK (1) |
|-----------------------|-----------------------|
%RVARB: | BNDBLK (2) |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|
SLS PROCEDURE
|-----------------------|-----------------------|
%TLINK: | PNAME PA | LENGTH |
%TBUCK: | | |
|-----------------------|-----------------------|
$PNAME: | PRG | BLK |
|-----------------------|-----------------------|
STBITS: | TBITS |
|-----------------------|-----------------------|
SVAL: | address |
|-----------------------|-----------------------|
SSBITS: | SBITS | level |
|-----------------------|-----------------------|
SLINK: | TLINK to ? | RVARB |
|-----------------------|-----------------------|
? | text addr | string adjust TLINK |
| | addr |
|-----------------------|-----------------------|
? | exit addr | toplev bit |
|-----------------------|-----------------------|
? | # arith words | # string words |
|-----------------------|-----------------------|
%RVARB: | | |
|-----------------------|-----------------------|
%RSTR: | | |
|-----------------------|-----------------------|