; ; ;COPYRIGHT (C) 1975,1981,1982 BY ;DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ;TRANSFERRED. ; ;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ;CORPORATION. ; ;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. ; ; ; ; WRITTEN BY K. NIST, C.M.U./ EDITED BY R. M. DE MORGAN SEARCH ALGPRM ; MAIN PARAMETER FILE IF1,< .DIRECTIVE .OKOVL> SALL %TITLE(ALGSTB,ALGOL COMPILER INITIAL SYMBOL TABLE) TWOSEG RELOC 400000 MLON SUBTTL BLOCK0 MODULE ; THIS MODULE CONTAINS BLOCK0, WHICH IS THE INITIAL SYMBOL TABLE, ; AND WHICH CONTAINS THE ENTRIES FOR THE LIBRARY PROCEDURES. BLOCK 0 ; IS IN A DIFFERENT PART OF THE LOW SEGMENT FROM THE REST OF THE ; SYMBOL TABLE, BUT IS PROPERLY LINKED IN WITH THE OTHER SO THAT ; ONE CANNOT REALLY TELL THE DIFFERENCE. ; ; THE MACRO "LIB" HAS BEEN PROVIDED TO SIMPLIFY PLACING THE ENTRIES IN ; BLOCK 0. ITS PARAMETERS ARE: ; ; ; PARAMETER 1: (ALIAS1) THE ALIAS NUMBER OF THE ROUTINE (WITHOUT THE ; %-SIGN). ; ; ; PARAMETER 2: (ALIAS2) THE ALIAS NUMBER OF THE 2ND ENTRY POINT IF ; THERE IS ONE (ALSO WITHOUT THE %-SIGN). ; WHEN THERE IS NO 2ND ENTRY POINT, THIS ; PARAMETER MUST BE DEFAULTED. ; ; ; PARAMETER 3: (TYPE) THE PROCEDURE TYPE, SPECIFIED AS: ; I - INTEGER ; R - REAL ; L - LONG REAL ; BO - BOOLEAN ; ST - STRING ; N - NON-TYPE ; ; ; PARAMETER 4: (ACT) THE NUMBER OF ACTUAL PARAMETERS. IF THERE ; CAN BE A VARIABLE NUMBER OF ACTUALS, ENTER ; A "V" FOR THIS PARAMETER. ; ; ; PARAMETER 5: (N1) 1ST 5 CHARACTERS OF NAME. ; PARAMETER 6: (N2) NEXT 6 CHARACTERS OF NAME. ; PARAMETER 7: (N3) NEXT 6 CHARACTERS OF NAME. ; ; ONLY LETTERS AND DIGITS ARE ALLOWED, NOT SPACES. ; ANY OF THESE PARAMETERS SHOULD BE OMITTED ; IF IT WOULD HAVE BEEN NULL. ALL SPECIFIED ; PARAMETERS *MUST* BE FOLLOWED IMMEDIATELY ; BY A COMMA, INCLUDING THE LAST PARAMETER. INTERN ZBOOL ; ADDR OF ENTRY FOR BOOL INTERN ZINT ; ADDR OF ENTRY FOR INT INTERN ZABS ; ADDR OF ENTRY FOR ABS INTERN ZSIGN ; ADDR OF ENTRY FOR SIGN INTERN ZENTIE ; ADDR OF ENTRY FOR ENTIE INTERN PRASE INTERN PRLIB SALL DEFINE ENTR (IND) < LLINK==HT'IND HT'IND==CLOC-XB0+BLOCK0> DEFINE ENTR1 (NAME,IND) < NAME'IND> DEFINE ENTR2 (NAME,IND,VAL) < NAME'IND==VAL> DEFINE INVERT (NX,NXVAL) < IFNB ,< NY==SIXBIT/NX/ SHIFTS==0 NYVAL==0 INV INV INV INV INV INV NXVAL==_> > DEFINE INV < CCHAR==NY&77 IFE CCHAR, < SHIFTS==SHIFTS+6 > IFN CCHAR, < CCHAR==&77 NYVAL==<_<6>>!CCHAR CCC==CCC+1 > NY==_<-6> > HASH==-1 REPEAT 200, < HASH==HASH+1 ENTR2 HT,\HASH,0 > ; THE WEIRD EXPRESSIONS IN LIB ARE TO GET ROUND A BUG IN MACRO-10!!! DEFINE LIB (ALIAS1,ALIAS2,TYPE,ACT,N1,N2,N3) < CCC==-1 LLINK==0 CLOC==. ENTR2 A1.,\AL1,<&037777777777> AL1==AL1+1 IFNB ,< ENTR2 A2.,\AL2,<&037777777777> AL2==AL2+1> IINDEX==IINDEX+1 INVERT N1,N1VAL INVERT N2,N2VAL INVERT N3,N3VAL IFNB ,< A==_<-11> B==N1VAL&777 TTEMP==B*D/1000+A*D+B*C+A*C*1000 HASH==<_<-^D26>>&177 ENTR \HASH> XWD EXT,LLINK XWD TYPE+ACT,0 IFB ,< XWD 0,0> IFNB ,< N1VAL+CCC> IFNB ,< N2VAL> IFNB ,< N3VAL> IFN EXT, < XWD 0,0 XWD 0,0 >> AL1==0 AL2==0 V==-1 C==647 D==327 IINDEX==0 B0LIST::XWD BLOCK0,XSYMHT+200-XB0 I==$I+$EXT+$PRO+$DEC+1 R==$R+$EXT+$PRO+$DEC+1 L==$LR+$EXT+$PRO+$DEC+1 BO==$B+$EXT+$PRO+$DEC+1 ST==$S+$EXT+$PRO+$DEC+1 N==$N+$EXT+$PRO+$DEC+1 EXT==0 XALL XB0: ; GROUP 1: BOOL, INT, ABS, SIGN, AND ENTIER. THIS ORDER ; CANNOT BE CHANGED. LIB 226,,BO,1,BOOL, ; BOOL LIB 225,,I,1,INT, ; INT LIB 222,,R,1,ABS, ; ABS LIB 223,,I,1,SIGN, ; SIGN LIB 224,,R,1,ENTIE,R, ; ENTIER EXT==400000 XPRASE: ; GROUP 2: STANDARD ALGOL LIBRARY PROCEDURES. EACH MUST ; HAVE TWO ENTRY POINTS. THE ORDER IN WHICH PROCEDURES ; ARE PLACED IN THIS GROUP IS NOT IMPORTANT. LIB 100,200,R,1,SIN, ; SIN LIB 101,201,R,1,COS, ; COS LIB 102,202,R,1,ARCTA,N, ; ARCTAN LIB 103,203,R,1,SQRT, ; SQRT LIB 104,204,R,1,EXP, ; EXP LIB 105,205,R,1,LN, ; LN LIB 106,206,R,1,TAN, ; TAN LIB 107,207,R,1,ARCSI,N, ; ARCSIN LIB 110,210,R,1,ARCCO,S, ; ARCCOS LIB 111,211,R,1,SINH, ; SINH LIB 112,212,R,1,COSH, ; COSH LIB 113,213,R,1,TANH, ; TANH LIB 114,214,L,1,LSIN, ; LSIN LIB 115,215,L,1,LCOS, ; LCOS LIB 116,216,L,1,LARCT,AN, ; LARCTAN LIB 117,217,L,1,LSQRT, ; LSQRT LIB 120,220,L,1,LEXP, ; LEXP LIB 121,221,L,1,LLN, ; LLN EXT==0 XPRLIB: ; GROUP 3: UNNAMED LIBRARY PROCEDURES. THE ALGOL USER CANNOT ; ACCESS THESE ENTRIES BY NAMING THEM IN HIS ; PROGRAM. THESE PROCEDURES ARE IN BLOCK 0 ONLY ; FOR INTERNAL REASONS. THE STRICT ORDERING OF THESE ; ENTRIES IS IMPORTANT. LIB 1,,R,1, ; POWER1 LIB 2,,R,1, ; POWER2 LIB 3,,R,1, ; POWER3 LIB 4,,R,1, ; POWER4 LIB 5,,R,1, ; POWER5 LIB 7,,R,1, ; IR LIB 10,,L,1, ; ILR LIB 12,,I,1, ; RI LIB 13,,L,1, ; RLR LIB 15,,I,1, ; LRI LIB 16,,R,1, ; LRR LIB 14,,L,1, ; ENTIEL LIB 17,,L,1, ; DFAD0 LIB 20,,L,1, ; DFSB0 LIB 21,,L,1, ; DFMP0 LIB 22,,L,1, ; DFDV0 LIB 23,,L,1, ; RDFSB0 LIB 24,,L,1, ; RDFDV0 LIB 25,,L,1, ; DFAD3 LIB 26,,L,1, ; DFSB3 LIB 27,,L,1, ; DFMP3 LIB 30,,L,1, ; DFDV3 LIB 31,,L,1, ; RDFSB3 LIB 32,,L,1, ; RDFDV3 LIB 33,,L,1, ; DFAD6 LIB 34,,L,1, ; DFSB6 LIB 35,,L,1, ; DFMP6 LIB 36,,L,1, ; DFDV6 LIB 37,,L,1, ; RDFSB6 LIB 40,,L,1, ; RDFDV6 LIB 41,,L,1, ; DFAD9 LIB 42,,L,1, ; DFSB9 LIB 43,,L,1, ; DFMP9 LIB 44,,L,1, ; DFDV9 LIB 45,,L,1, ; RDFSB9 LIB 46,,L,1, ; RDFDV9 XPRAN: ; GROUP 4: ALL OTHER LIBRARY PROCEDURES. THESE ROUTINES ; MUST HAVE 1 ENTRY POINT. THE ORDERING OF THESE ; ENTRIES IS NOT IMPORTANT. LIB 300,,I,1,DIM, ; DIM LIB 301,,I,2,LB, ; LB LIB 302,,I,2,UB, ; UB LIB 303,,I,V,IMIN, ; IMIN LIB 304,,I,V,IMAX, ; IMAX LIB 305,,R,V,RMIN, ; RMIN LIB 306,,R,V,RMAX, ; RMAX LIB 307,,L,V,LMIN, ; LMIN LIB 310,,L,V,LMAX, ; LMAX LIB 311,,I,3,GFIEL,D, ; GFIELD LIB 312,,N,4,SFIEL,D, ; SFIELD LIB 314,,ST,V,COPY, ; COPY LIB 315,,N,V,TRAP, ; TRAP LIB 316,,I,0,INCHA,N, ; INCHAN LIB 317,,I,0,OUTCH,AN, ; OUTCHAN LIB 320,,ST,2,NEWST,RING, ; NEWSTRING LIB 321,,I,1,LENGT,H, ; LENGTH LIB 322,,N,1,DELET,E, ; DELETE LIB 325,,ST,V,CONCA,T, ; CONCAT LIB 326,,I,1,SIZE, ; SIZE LIB 327,,N,1,TRACE, ; TRACE LIB 401,,N,1,INSYM,BOL, ; INSYMBOL LIB 402,,N,1,OUTSY,MBOL, ; OUTSYMBOL LIB 403,,N,1,NEXTS,YMBOL, ; NEXTSYMBOL LIB 404,,N,0,SKIPS,YMBOL, ; SKIPSYMBOL LIB 405,,N,0,BREAK,OUTPUT, ; BREAKOUTPUT LIB 406,,N,V,SPACE, ; SPACE LIB 407,,N,V,TAB, ; TAB LIB 410,,N,V,NEWLI,NE, ; NEWLINE LIB 411,,N,V,PAGE, ; PAGE LIB 412,,N,V,READ, ; READ LIB 413,,N,1,WRITE, ; WRITE LIB 414,,N,V,PRINT, ; PRINT LIB 415,,N,1,READO,CTAL, ; READOCTAL LIB 416,,N,1,PRINT,OCTAL, ; PRINTOCTAL LIB 417,,N,V,INPUT, ; INPUT LIB 420,,N,V,OUTPU,T, ; OUTPUT LIB 421,,N,1,SELEC,TINPUT, ; SELECTINPUT LIB 422,,N,1,SELEC,TOUTPU,T, ; SELECTOUTPUT LIB 423,,N,1,RELEA,SE, ; RELEASE LIB 424,,N,V,OPENF,ILE, ; OPENFILE LIB 425,,N,1,CLOSE,FILE, ; CLOSEFILE LIB 426,,N,0,TRANS,FILE, ; TRANSFILE LIB 427,,N,1,BACKS,PACE, ; BACKSPACE LIB 430,,N,1,ENDFI,LE, ; ENDFILE LIB 431,,N,1,REWIN,D, ; REWIND LIB 432,,BO,1,IOCHA,N, ; IOCHAN LIB 433,,I,1,INLIN,E, ; INLINE LIB 434,,N,V,CALL, ; CALL LIB 435,,I,V,ICALL, ; ICALL LIB 436,,R,V,RCALL, ; RCALL LIB 437,,L,V,DCALL, ; DCALL LIB 440,,BO,V,LCALL, ; LCALL LIB 441,,I,1,INFO, ; INFO LIB 442,,ST,0,FDATE, ; FDATE LIB 443,,ST,0,VDATE, ; VDATE LIB 444,,ST,0,TIME, ; TIME ; ; Edit(1011) Establish aliases for RAN,TRACEON,TRACEOFF ; LIB 445,,I,0,RAN, ; RAN LIB 445,,I,0,RAND ; [E1011] = RAND LIB 446,,N,1,SETRA,N, ; SETRAN LIB 447,,I,0,SAVRA,N, ; SAVRAN LIB 455,,N,0,TRACE,ON, ; TRACEON LIB 455,,N,0,ONTRA,CE, ; [E1011] = ONTRACE LIB 456,,N,0,TRACE,OFF, ; TRACEOFF LIB 456,,N,0,OFFTR,ACE, ; [E1011] = OFFTRACE LIB 460,,I,0,TRAPN,O, ; TRAPNO LIB 461,,N,0,PAUSE, ; PAUSE LIB 462,,N,1,DUMP, ; DUMP LIB 450,,N,V,F10CA,LL, ; F10CALL LIB 451,,I,V,F10IC,ALL, ; F10ICALL LIB 452,,R,V,F10RC,ALL, ; F10RCALL LIB 453,,L,V,F10DC,ALL, ; F10DCALL LIB 454,,BO,V,F10LC,ALL, ; F10LCALL XB0END: ; END OF BLOCK 0 SALL XSYMHT: HASH==-1 REPEAT 200, < HASH==HASH+1 ENTR1 HT,\HASH > XWD 0,0 ATABLE:: ; TABLE OF LIBRARY ROUTINE ALIAS NAMES ALC==-1 REPEAT AL1, < ALC==ALC+1 ENTR1 A1.,\ALC > AT2==:.-5 ; TABLE OF 2-ENTRY LIBRARY ALIAS NAMES ALC==-1 REPEAT AL2, < ALC==ALC+1 ENTR1 A2.,\ALC > RELOC BLOCK0:: ZBOOL: BLOCK 3 ZINT: BLOCK 3 ZABS: BLOCK 3 ZSIGN: BLOCK 3 ZENTIE: BLOCK 4 PRASE: BLOCK XPRLIB-XPRASE PRLIB: BLOCK XPRAN-XPRLIB PRAN: BLOCK XB0END-XPRAN B0END:: SYMHT:: BLOCK 200 ; SYMBOL TABLE HASH TABLE (**MUST FOLLOW BLOCK0**) RELOC END