Trailing-Edge
-
PDP-10 Archives
-
ap-5069b-sb
-
10,6/algprm.mac
There are 8 other files named algprm.mac in the archive. Click here to see a list.
;
;
;
;
;
;
; COPYRIGHT (C) 1975,1976,1977
; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
;
;
; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY 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 EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO
; AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
; SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
;
; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
; EQUIPMENT CORPORATION.
;
; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
;
;SUBTTL MAIN ASSIGNMENTS
; COPYRIGHT 1971,1972,1973,1974 DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
; THIS FILE MUST BE COMPILED BEFORE ALL OTHER ALGOL FILES
SALL
MAJVNO==7 ; MAJOR VERSION NUMBER
MINVNO==0 ; MINOR VERSION NUMBER
EDTNO==741 ; EDIT NUMBER
VERNO==<MAJVNO>B11+<MINVNO>B17+EDTNO
DEFINE %TEXT(F,VERNO)
< DEFINE %'F(A,B)
<F A - B, VERNO, EUROPEAN SOFTWARE ENGINEERING, SEP-74
>>
%TEXT(UNIVERSAL,7(741))
%TEXT(TITLE,7(741))
%TEXT(SUBTTL,7(741))
%UNIVERSAL(ALGPRM,ALGOL PARAMETER FILE)
KA10==0 ; PROCESSOR SWITCHES
KI10==1 ; FOR LIBRARY ONLY
; PDP-10 (KA10) VERSION: PROC==KA10
; PDP-10 (KI10) VERSION: PROC==KI10
IFNDEF PROC, <
PROC==KI10> ; DEFAULT: PDP-10 (KI10) VERSION
PATCH (33) ; MAKE DEFAULT = KI10
IFNDEF FTDDT, <FTDDT==-1>
IFNDEF FTSYM,<FTSYM==1> ; 1 to make compiler produce 1044 blocks by default.
IFE FTDDT,<FTSYM==0> ; Lets not be stupid, folks !
IFNDEF FTSTATS, <FTSTATS==0> ; 1 TO PRODUCE COMPILER STATS.
.JBREN==124 ; THESE ASSIGNMENTS WILL GIVE
.JBOPS==135 ; LOADING ERRORS IF JOBDAT CHANGES
.JBVER==137
.JBHDA=10
SUBTTL PATCH MACRO FOR DEVELOPMENT CHANGES
DEFINE PATCH (A),<
IFG <10-A>,<
PAT00'A=.
>
IFG <100-A>,<
IFLE <10-A>,<
PAT0'A=.
>>
IFLE <100-A>,<
PAT'A=.
>
>
SUBTTL EDIT MACRO FOR BUG-FIXES
DEFINE EDIT (A),<
IFG <10-A>,<
EDT00'A=.
>
IFG <100-A>,<
IFLE <10-A>,<
EDT0'A=.
>>
IFLE <100-A>,<
EDT'A=.
%E.'A=:0
>
>
SUBTTL ALGOL UUOS, OPDEFS AND MAGIC NUMBERS
; ALGOL UUOS:
OPDEF PJRST [JRST] ; PUSHJ POPJ COMBINATION
OPDEF DUMPR [001B8] ; DUMP UUO
OPDEF SYSER1 [002B8] ; SYSTEM ERROR UUO #1
OPDEF SYSER2 [003B8] ; SYSTEM ERROR UUO #2
OPDEF IOERR [004B8] ; INPUT/OUTPUT ERROR UUO
OPDEF LIBERR [005B8] ; LIBRARY ERROR UUO
OPDEF CCORE [006B8] ; CHANGE CORE UUO
PATCH(30) ; NEW CORE UUO
OPDEF CCORE1 [007B8] ; SHIFT THE STACK
OPDEF BREAK [010B8] ; BREAKPOINT.
OPDEF DDTERR [011B8] ; ALGDDT ERROR.
; ALGOL OPDEFS:
OPDEF JFOVO [JFCL 11,]
; SPECIAL UNDERFLOW TREATMENT
OPDEF XCTA [XCT 1,]
; LEFT HAND SIDE REFERENCE
$A==000040 ; FLAG FOR DETECTING XCTA
; DOUBLE OPERATIONS FOR LIBRARY ONLY EDIT 536
IFE PROC-KA10,<
DEFINE LRLOAD(A,B)
< MOVE A,B
MOVE 1+A,1+B
>
DEFINE LRSTOR(A,B)
< MOVEM A,B
MOVEM 1+A,1+B
>
DEFINE LRNEG(A,B)
< DFN A,B
>>
IFE PROC-KI10,<
DEFINE LRLOAD(A,B)
< DMOVE A,B
>
DEFINE LRSTOR(A,B)
< DMOVEM A,B
>
DEFINE LRNEG(A,B)
< DMOVN A,A
IFN <<A+1>&17-<B>>,<PRINX DFN ERROR>
>>
; DEFAULT (& MINIMUM) HEAP SIZE
DELTA1==^D521
PATCH (2) ; RE-IMPLEMENT /D (SET HEAP SIZE) SWITCH
; KEN'S 'RANDOM' NUMBER:
RANDOM==647327
SUBTTL ACCUMULATOR ASSIGNMENTS
A0==0 ; MUST BE 0 FOR SBYTE!
A1==1
A2==2
A3==3
A4==4
A5==5
A6==6
A7==7
A10==10
A11==11
A12==12
A13==13
DB==14 ; DATA BASE
DL==15 ; DYNAMIC LEVEL
AX==16 ; AUXILIARY ADDRESS
SP==17 ; DYNAMIC STACK POINTER
SUBTTL PROCEDURE CALL PARAMETER CODES
; PARAMETER CODES (FORMAL AND ACTUAL PARAMETER DESCRIPTORS):
; BIT 0: STATIC/DYNAMIC
$D==400000 ; DYNAMIC
; BITS 1-2: KIND:
$KIND==300000
$VAR==000000 ; VARIABLE
$EXP==100000 ; EXPRESSION
$ARR==200000 ; ARRAY
$PRO==300000 ; PROCEDURE
; BITS 3-8: TYPE:
$TYPE==077000
$I==007000 ; INTEGER
$R==016000 ; REAL
$LR==025000 ; LONG REAL
$C==031000 ; COMPLEX
$LC==032000 ; LONG COMPLEX
$B==043000 ; BOOLEAN
$S==070000 ; STRING
$L==052000 ; LABEL
$N==062000 ; NON-TYPE
; BITS 9-11: STATUS:
$STAT==000700
$STATUS==$STAT
$SIM==000000 ; SIMPLE
$REG==000100 ; REGULAR
$OWN==000200 ; OWN
$EXT==000300 ; EXTERNAL
$FOW==000400 ; FORWARD
$FON==000500 ; FORMAL-BY-NAME
$FOV==000600 ; FORMAL-BY-VALUE
$STMT==000700 ; STATEMENT
; BITS 12 - 17: P ADDRESS (ACTUALS)
$P==000077
$DEC==000040 ; DECLARED
; BITS 18 - 35: Q ADDRESS (ACTUALS)
; BITS 18 - 35: FORMAL PARAMETER ADDRESS (FORMALS)
; "WILD CARD" TYPES:
$WV==000000 ; WILD VARIABLE
$AB==001000 ; ARITHMETIC/BOOLEAN
$ABN==002000 ; ARITHMETIC/BOOLEAN/NON-TYPE
$IB==003000 ; INTEGER/BOOLEAN
$WF==004000 ; WILD FLOATING (REAL, LONG REAL)
$WA==040000 ; WILD ARITHMETIC (INTEGER, REAL, LONG REAL)
; COMPOUND TYPE BITS:
$ARC==040000 ; NOT ARITHMETIC
$IRLR==004000 ; INTEGER, REAL OR LONG REAL
$IR==060000 ; NOT (INTEGER OR REAL)
$CLC==044000 ; NOT (COMPLEX OR LONG COMPLEX)
$VAR1==020000 ; NOT VARIABLE OF ONE WORD
$VAR2==002000 ; NOT VARIABLE OF TWO WORDS
$VAL==000200 ; VALUE
; PROCEDURE INFORMATION (RELATIVE TO DL):
PATCH (32) ; INSERT POST-MORTEM BLOCK IN PROCEDURE DATA BASE
LINKDL==-6 ; DL CHAIN
PRGLNK==-5 ; PROGRAM LINK
PMBPTR==-4 ; POST-MORTEM BLOCK POINTER
CONDL==-3 ; CONTEXT DL
BLKPTR==-2 ; BLOCK POINTER
PLBLKL==-1 ; PROCEDURE LEVEL, BLOCK LEVEL
PRMMAX==12 ; MAXIMUM NUMBER OF PARAMETERS
; IN MIN, MAX ETC.
; BITS IN DB LEFT HALF
OMC1==400000 ; 0 - RUNNING ON KA10
; 1 - RUNNING ON KI10/KL10 (D.P. FLOATING PT)
OMC2==200000 ; 0 - RUNNING ON KA10/KI10
; 1 - RUNNING ON KL10
SMC1==100000 ; 0 - COMPILED ON KA10
; 1 - COMPILED ON KI10/KL10
SMC2==40000 ; 0 - COMPILED ON KA10/KI10
; 1 - COMPILED ON KL10
TMC1==20000 ; 0 - COMPILED FOR KA10
; 1 - COMPILED FOR KI10/KL10
TMC2==10000 ; 0 - COMPILED FOR KA10/KI10
; 1 - COMPILED FOR KL10
TRLVEL==4000 ; 0 - NO TRACE STATEMENTS
; 1 - PROGRAM CONTAINS TRACE STATEMENTS
INDDT==2000 ; 1 - IN DEBUGGING SYSTEM
STMTST==1000 ; 1 - USER HAS INTERRUPTED (^C)
TMPFL1==400 ; TEMPORARY FLAGS - USED ONLY IN GETOWN
TMPFL2==200 ; USED ONLY IN GETOWN
TMPFL3==100 ; USED ONLY IN FUNCT., AND IN ERRM30/DEBUGGER INTERFACE.
; BITS 13-17 ARE RESERVED !!!
OMC==OMC1
SMC==SMC1
TMC==TMC1
SUBTTL MAIN ASSIGNMENTS
; DUMP ROUTINE NOT LOADED: DUMP=0
; DUMP ROUTINE LOADED: DUMP=1
IFNDEF DUMP, <
DUMP=0> ; DEFAULT: DUMP ROUTINE NOT LOADED
PATCH (7) ; MAKE DEFAULT NOT TO LOAD DUMP-ROUTINE
SUBTTL DATA BASE STRUCTURE
PATCH(23) ; MAKE DATA BASE MORE SECURE
%DBL==0
DEFINE %DBMAC(NAME,L<1>) <
NAME==%DBL
%DBL==%DBL+L
>
; ADDRESSES ARE RELATIVE TO THE DATA BASE (DB)
%DBMAC(%UUO,2) ; UUO ENTRY
%DBMAC(%CONC,4) ; CONTROL-C TRAP
%DBMAC(%CHAN) ; CURRENTLY SELECTED I/O CHANNELS
%DBMAC(%TTYCH) ; CURRENT CH #'S OPEN FOR TTY
%DBMAC(%RAND) ; RANDOM NUMBER
%DBMAC(%ESP) ; EMERGENCY STACK POINTER
%DBMAC(%ACCS,20) ; DUMP FOR USER ACCUMULATORS
%DBMAC(%SYS0) ; PARAMETER BLOCK ADDRESS
%DBMAC(%SYS1) ; INITIAL CORE SIZE
%DBMAC(%SYS2) ; INACTIVE HEAP CHAIN
%DBMAC(%SYS3) ; DATE OF STARTING PROGRAM
%DBMAC(%SYS4) ; TIME OF DAY AT START OF PROGRAM
%DBMAC(%SYS5) ; RUN TIME AT START OF PROGRAM
%DBMAC(%SYS6) ; DUMP COUNT
%DBMAC(%SYS7) ; GENERAL ACCUMULATOR SAVE
%DBMAC(%SYS10) ; GENERAL ACCUMULATOR SAVE
%DBMAC(%SYS11) ; GENERAL ACCUMULATOR SAVE
%DBMAC(%SYS12) ; GENERAL ACCUMULATOR SAVE
%DBMAC(%SYS13) ; GENERAL ACCUMULATOR SAVE
%DBMAC(%SYS14) ; USED IN APR ERROR HANDLER
%DBMAC(%SYS15) ; USED IN APR ERROR HANDLER
%DBMAC(%SYS16) ; USED IN APR ERROR HANDLER
%DBMAC(%SYS17) ; USED IN APR ERROR HANDLER
PATCH (4) ; STACK-SHIFTING STATISTICS
%DBMAC(%SYS20) ; COUNT OF STACK-SHIFTS
%DBMAC(%SYS21) ; SAVE INITIAL HEAP ORIGIN
%DBMAC(%SYS22) ; POINTER TO TRACE VECTOR
PATCH (16) ; INFO
%DBMAC(%SYS23) ; COMPILER VERSION WORD
%DBMAC(%SYS24) ; MAX # USED WORDS IN HEAP-TABLE
%DBMAC(%IFDAT,3) ; FOR OVERLAY LOADER
%DBMAC(%SYSOV) ; FUNCT. PRIVATE HEAP-CHAIN BASE
%DBMAC(%%TTY) ; I/O DIRECTORY WORD FOR TTY (-1)
%DBMAC(%IODR,40) ; I/O DIRECTORY
%DBMAC(%TRAPS,100) ; TRAP VECTOR
PATCH(37) ; POST-MORTEM TRACE
%DBMAC(%TRPTR) ; POINTER TO CURRENT TRACE ENTRY
%DBMAC(%TRLNTH) ; LENGTH OF TRACE TABLE
%DBMAC(%TRLV) ; DYNAMIC BLOCK POINTER [P37]
%DBMAC(%TTY,6) ; CHANNEL -1 TTY (%TTCALL)
%DBMAC(%IBUFF,21) ; CHANNEL -1 INPUT BUFFER
%DBMAC(%OBUFF,21) ; CHANNEL -1 OUTPUT BUFFER
%DBMAC(%ES,22) ; EMERGENCY STACK
%DBMAC(%SFILE,12) ; SYMBOL FILE-NAME ETC.
%DBMAC(%DDTST) ; AOBJN POINTER TO SYMBOL TABLE
%DBMAC(%DDTBK) ; AOBJN POINTER TO BREAKPOINT TABLE
%DBMAC(%DDTAL) ; XWD ADDR OF CURRENT BREAKPOINT CONTROL BLOCK OR 0,
; PTR TO AUTOLIST TABLE OR 0 (FIXED 26. WORDS LONG)
%DBMAC(%DDTBI) ; AOBJN POINTER TO BLOCK INDEX
%DBMAC(%DDTBE) ; POINTER TO CURRENT BLKIDX ENTRY
%DBMAC(%DDTTY) ; SAVE OLD %CHAN DURING DDT.
%DBMAC(%DDTPT) ; XWD ADDR OF FAILING MODULE'S LOADER S.T. ENTRY,
; ADDR OF STN-ITEM OF ERROR OR PAUSE.
%DBMAC(%DDTIP) ; I/P POINTER, OR POINTER TO IT IF DDALST IS SET.
%DBMAC(%DDTER) ; L.H. = REDIRECT CHANNEL #,
; R.H. = ADDR OF LAST ERR MSG (FOR EXPERT/NOVICE)
%DBMAC(%DDTFL) ; SAVE FOR FLAG REGISTER.
%DBMAC(%DDTPC) ; XWD DL OF CONTEXT ESTABLISHED BY FNDADR,
; ADDR OF ERROR OR PAUSE. SAVED BY ERRMON OR PAUSE CODE.
%DBMAC(%DDTUW) ;[P64]FOR UNWIND COMMAND. XWD ADDR OF
; ORIGINAL ("PROPER") CONTEXT, HIGHEST (I.E.
; ("PROPER") DYNAMIC PROCEDURE LEVEL.
PATCH (64) ; UNWIND COMMAND (ALSO BACK COMMAND.)
%DBMAC(%DDTPL) ; MINUS (DYNAMIC PROCEDURE LEVEL)
%DBMAC(%DDTDL) ; TRUE TOP-LEVEL DL (IN CASE OF THUNKS)
EDIT(677) ; ADD SOME LOCATIONS FOR CUSTOMERS
%DBMAC(%CUST1) ; [E677] TWO LOCATIONS FOR CUSTOMERS TO USE
%DBMAC(%CUST2) ; [E677] ..
%DBMAC(%DDTGO) ; ADDRESS OF "GOTO" BLOCK
%DBMAC(%DDTCB,33) ; ALGDDT COMMAND BUFFER
%DBMAC(%DDTFB,33) ; WHOLE-FIELD BUFFER
%DBMAC(%DDTIB,16) ; IDENTIFIER BUFFER
%DBL==%DBL ; LENGTH OF DATA-BASE
SUBTTL ENTRY FLAGS
; SET UP IN THE LH OF AX BY ALGOBJ IN ALGLIB:
REEN=400000 ; REENTER
SUBTTL IO CONTROL BITS
; STATUS BITS (IN LH OF IO DIRECTORY ENTRY)
PLDEV=400000 ; PHYSICAL/LOGICAL DEVICE (MUST BE BIT 0)
DIRDEV=200000 ; DIRECTORY DEVICE
TTYDEV=100000 ; TTY TYPE DEVICE
ABMODE=040000 ; ASCII/BINARY MODE
SPOPRN=020000 ; SPECIAL OPERATIONS PERMITTED
PLTDEV=010000 ; PLOTTER
TTYTTC=004000 ; TTY ON TTCALL
SPLDEV=002000 ; SPOOLED DEVICE
INDEV=001000 ; DEVICE CAN DO INPUT
ININT=000400 ; DEVICE INITED FOR INPUT
INFIL=000200 ; FILE OPEN FOR INPUT
INEOF=000100 ; INPUT EOF STATUS
INOK=000040 ; INPUT OK STATUS
OUTDEV=000020 ; DEVICE CAN DO OUTPUT
OUTINT=000010 ; DEVICE INITED FOR OUTPUT
OUTFIL=000004 ; FILE OPEN FOR OUTPUT
OUTEOF=000002 ; OUTPUT EOF STATUS
OUTOK=000001 ; OUTPUT OK STATUS
; MISCELLANEOUS SPECIAL BYTE VALUES:
LF=012 ; LINE FEED
FF=014 ; FORM FEED
CR=015 ; CARRIAGE RETURN
CONZ=032 ; CONTROL-Z
SUBTTL STRING ACCESS FLAGS
STR1=0 ; FIRST WORD
STR2=1 ; SECOND WORD
; FLAGS (USED IN LH OF SECOND WORD):
STRDYN=200000 ; DYNAMIC
STRPRC=100000 ; RESULT OF STRING PROCEDURE
STRSPB=070000 ; SPARE
STRBS=007700 ; BYTE SIZE
STRBSC=770077 ; STRBS COMPLEMENT
STRBC=000077 ; BYTE COUNT (CONTINUED IN RH)
STRBCC=777700 ; STRBC COMPLEMENT
;Flags for controlling Object Code dump formats (in L.H. of AC)
ZERFLG==400000
OBJOCT==200000
OBJASC==100000
OBJSIX==040000
OBJSYM==020000
OBJINT==010000
OBJREA==004000
OBJLR==0002000
OBJERR==001000
OBJDEF==OBJOCT!OBJSYM ;Default
; ERROR UUO FLAGS (LH OF M TABLES):
FATAL==400000 ; MUST BE BIT 0
ERRDEV==200000 ; INCLUDE DEVICE-NAME IN IOERR MSG
ERRFIL==100000 ; INCLUDE FILE.EXT IN IOERR MSG
ERR2PT==40000 ; MORE TO COME IN IOERR MSG
PATCH (17) ; IMPROVE I/O ERROR MESSAGES
TRAPNO=000077
SUBTTL APR TRAP AND PC FLAGS
; APR TRAP FLAGS
APRO=000010 ; ARITHMETIC OVERFLOW
APRFPO=000100 ; FLOATING POINT OVERFLOW
APRNXM=010000 ; NONEXISTENT MEMORY
APRMPV=020000 ; MEMORY PROTECT VIOLATION
APRPLO=200000 ; PUSHDOWN LIST OVERFLOW
APRLOK=400000 ; TRAP LOCK
APRFLG=APRO!APRFPO!APRNXM!APRMPV!APRPLO!APRLOK
; PC FLAGS
PCNDIV=000040 ; NO DIVIDE
PCFPU=000100 ; FLOATING POINT UNDERFLOW
PCFPO=040000 ; FLOATING POINT OVERFLOW
PCO=400000 ; ARITHMETIC OVERFLOW
PCOVL=PCNDIV!PCFPO!PCO
; CONTROL-C TRAP FLAG
CONCF=2
ILLUUO=100 ; ILLEGAL UUO, ETC.
DQUOTA=20 ; EXCEEDING DISC QUOTA.
;PRINT FORMAT CONTROL FLAGS (LH OF A2):
NUMRNG=400000 ; NUMBER RANGE (EXPONENT SIGN - MUST BE BIT 0)
NUMSGN=200000 ; SIGN FLAG
INTOVL=100000 ; INTEGER OVERFLOW
LNGEXP=040000 ; LONG EXPONENT
LNGMAN=020000 ; LONG MANTISSA
DIGEXH=010000 ; DIGITS EXHAUSTED
NOSIGN=004000 ; PRINT - OR NOTHING (NOT SPACE FOR +)
; MAXIMUM SIGNIFICANCE:
INTDIG=^D11
SRDIG=^D9
SUBTTL MISC JOBDAT WORDS
JBTPRG=3
END