MODULE INIT .=.+1314 ;SKIP OVER DATA IN PASCAL,BLOCK,DECLAR,STATE .NLIST BEX ; .MACRO NAMES ARG .IRP A, .ASCII /A/ .ENDR .ENDM ; INDEX TABLE FOR NA, TABLE OF STANDARD NAMES. ; REPLACES PROCEDURE STANDARDNAMES. DATA NAINX .WORD 0,5,9.,12.,15.,20.,25.,30.,37.,45.,49. .WORD 54.,57.,61.,65.,72.,76.,80.,83.,86.,89.,92.,95. .WORD 98.,103.,108.,113.,116.,119.,123.,128.,131.,134. .WORD 138.,140.,143.,146.,149.,155. ; ; TABLE NA, CONTAINING STANDARD NAMES. DATA NA NAMES NAMES NAMES ; NOTE NEW NAME: FREE. NAMES NAMES NAMES NAMES DATA INTNAM NAMES DATA REALNAM NAMES DATA CHARNAM NAMES DATA BOOLNAM NAMES DATA TEXTNAM NAMES DATA NILNAM NAMES .PAGE ; ; CONSTANTS L0=0 L1=1 L2=2 L3=3 ; ; CONSTANT VALUES FOR TYPES DEKLKIND, IDKIND NOT FORMALLY USED. ; USED AS BIT VALUES, TESTED, SET BY BIT INSTRUCTIONS. ; STANDARD=0 ; DECLARED=1 ; ACTUAL=0 ; FORMAL=1 ; ; FORMS FOR STRUCTURES FOR STANDARD TYPES. .EVEN DATA INTST .WORD 0,16.,0 DATA REALST .WORD 0,64.,0 DATA CHARST .WORD 0,8.,0 DATA BOOLST .WORD 32.,1,0 DATA NILST .WORD 2,16.,NIL DATA TEXTST .WORD 6,288.,0 ; ; FORM FOR DUMMY IDENTIFIER ; DATA DUMMYID .WORD NIL,NIL,NIL,NIL,NIL,0,0 .PAGE .SBTTL SYSTEM MACROS ; .MACRO ATTACH P,PL,Q,QL,D ; INSERTS POINTER P INTO RECORD Q@, WITH OFFSET D. LOAD P,PL LOAD Q,QL STODP D .ENDM ; .MACRO PRIME N,LN,P,L ; MOVES NAMED CONSTANT RECORD INTO NEWLY CREATED ONE. POINT N,L0 NEW LN STON P,L LOADI LN FILL .ENDM ; .MACRO NEWNAME I,IL,K,T,N,P .IF IDN IL,* LOAD I LOADX NAINX,0 POINTX NA,0,B POINT ID+1,0 LOAD I INCS LOADX NAINX,0 LOAD I LOADX NAINX,0 SUBSS .IFF POINT I,0 POINT ID+1,0 LOADI IL .ENDC STON ID,0,B FILL B MARKS 0 LOADI K .IF IDN T,* LOADI NIL .IFF LOAD T,0 .ENDC .IF IDN N,* LOADI NIL .IFF LOAD N .ENDC POINT P CALL NEWID,1 .ENDM .PAGE .GLOBL NEWID PROC INITTABLES,L1,* ; CREATES AND INITIALIZES STANDARD TYPES, STANDARD PROCEDURES, ; PREDECLARED CONSTANTS, PREDECLARED FUNCTIONS, ; AND UNDECLARED IDENTIFIERS. WORD CP ; CTP; HOLDS PTR TO IDENTIFIER RECORD BEING INITIALIZED WORD CP1 ; AS CP WORD I ; INTEGER; HOLDS INDEX TO NA TABLE. BEGIN ; ; INTEGER ; PRIME INTST,STRL1,INTPTR,L0 NEWNAME INTNAM,7,TYPES,INTPTR,*,CP ; ; REAL ; PRIME REALST,STRL1,REALPTR,L0 NEWNAME REALNAM,4,TYPES,REALPTR,*,CP ; ; CHAR ; PRIME CHARST,STRL1,CHARPTR,L0 NEWNAME CHARNAM,4,TYPES,CHARPTR,*,CP ; ; BOOLEAN = (FALSE,TRUE) ; PRIME BOOLST,STRL1,BOOLPTR,L0 STOI NIL,CP1 ZEROM I LOOP NEWNAME I,*,KONST,BOOLPTR,CP1,CP ZEROS STODR CP,,I.C.C,B LOAD I STODR CP,,I.C.I CMPIM 1,I WHILE GT INCM I MOVE CP,,CP1 ENDLOOP ATTACH CP,,BOOLPTR,L0,S.FC ; LINK CHAIN OF VALUES TO TYPE. NEWNAME BOOLNAM,7,TYPES,BOOLPTR,*,CP ; ; TEXT = FILE OF CHAR ; PRIME TEXTST,STRL1,TEXTPTR,L0 ATTACH CHARPTR,L0,TEXTPTR,L0,S.FT NEWNAME TEXTNAM,4,TYPES,TEXTPTR,*,CP ; ; NIL ; PRIME NILST,STRL1,NILPTR,L0 NEWNAME NILNAM,3,KONST,NILPTR,*,CP .PAGE ; ; STANDARD PROCEDURES AND FUNCTIONS ; STOI 2,I LOOP NEWNAME I,*,PROC,*,*,CP LOAD I SUBIS 2 STODR CP,,I.KE,B CMPIM 37.,I WHILE GT INCM I ENDLOOP ZEROM ID,0,B ;NULL IDENTIFIER ZEROM I LOOP PRIME DUMMYID,IDNLEN,CP LOAD CP LOAD I STODX UDPTRS,L0 LOADI NIL STONR CP,,I.T STODR CP,,I.NX LOAD I STODR CP,,I.K,B CMPIM PROC,I WHILE GT INCM I ENDLOOP ENDPROC ; INITTABLES .END