Directory of image this file is from
This file as a plain text file
PAL8-V12A 31-JAN-83 PAGE 1
/ ############ ######### #########
/ ############ ######### #########
/ ### ### ### ### ### ###
/ ### ### ### ### ### ###
/ ### ### ### ### ###
/ ### ### ### ### ###
/ ############ ############### #########
/ ############ ############### #########
/ ### ### ### ###
/ ### ### ### ###
/ ### ### ### ### ###
/ ### ### ### ### ###
/ ### ### ### #########
/ ### ### ### #########
/
/
/ ######### ######### ###
/ ######### ######### ###
/ ### ### ### ### ###
/ ### ### ### ### ###
/ ### ### ### ###
/ ### ### ### ###
/ ### ############### ###
/ ### ############### ###
/ ### ### ### ###
/ ### ### ### ###
/ ### ### ### ### ###
/ ### ### ### ### ###
/ ######### ### ### ###############
/ ######### ### ### ###############
/
/
/ #########
/ #########
/ ### ###
/ ### ###
/ ###
/ ###
/ ######### ######### FROM N.WIRTH
/ ######### ######### ETH - ZUERICH
/ ###
/ ###
/ ### ###
/ ### ###
/ #########
/ #########
/
/
/IMPLEMENTED ON A PDP-8/E COMPUTER WITH 28K-WORDS OF MEMORY
/BY
/PROF. HEINZ STEGBAUER
/HTL-MOEDLING, IN 1979
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 2
0002 VERSION=2
/C O R E L A Y O U T :
/FIELD 0 0000 - 5777 INTERPRETER
/ 6000 - 6777 FILE- AND DEVICE BUFFERS
/ 7000 - 7577 COMPILER (INSYMBOL, NEXTCH)
/ 7600 - 7777 OS/8 - RESIDENT PART
/FIELD 1 0000 - 7577 INTERMEDIATE CODE
/ 7600 - 7777 OS/8 - RESIDENT PART
/FIELD 2 0000 - 3777 SYMBOL-TABLE
/ 4000 - XXXX STRING-TABLE
/ XXXX - 6377 CONSTANT-TABLE
/ 6400 - 7377 ARRAY-TABLE
/ 7400 - 7777 BLOCK-TABLE
/AT COMPILETIME:
/FIELD 3 0000 - 3777 NAMES OF SYMBOL-TABLE
/ 4000 - 7177 FSYS, SET-CONSTANTS, LISTS AND
/ TABLES, ERROR ROUTINES
/FIELD 4 0000 - 6377 COMPILER
/ 6400 - 7777 AUXILIARY ROUTINES
/FIELD 5 0000 - 7777 STACK FOR COMPILER OPERATION
/FIELD 6 0000 - 7777 LONG ERROR MESSAGES
/AT RUNTIME:
/FIELD 3 0000 - 7777 /S T A C K (4K WORDS OF 48 BITS)
/FIELD 4 0000 - 7777
/FIELD 5 0000 - 7777
/FIELD 6 0000 - 7777
0010 CODEFIELD=10
0020 TABLEFIELD=20
0030 NAMEFIELD=30
0030 SETFIELD=30
0040 COMPFIELD=40
0050 PUSHFIELD=50
0060 ERRFIELD=60
0030 STACKFIELD=30
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 3
/S T R U C T U R E O F T A B L E S :
/SYMBOL-TABLE (4 WORDS PER ENTRY, MAX. 512 ENTRIES)
/------------
0000 TAB=0000
0000 LINK=TAB /WORD 0, BITS 0-11
0001 OBJ=TAB+1 /WORD 1, BITS 0-5
0001 TYP=TAB+1 /WORD 1, BITS 6-11
0002 REF=TAB+2 /WORD 2, BITS 0-5
0002 NORMAL=TAB+2 /WORD 2, BIT 6
0002 LEV=TAB+2 /WORD 2, BITS 7-11
0003 ADR=TAB+3 /WORD 3, BITS 0-11
/STRING-TABLE (ARRAY[0:N] OF CHAR, 6 BITS/CHAR,FROM 4000 UPWARDS)
/------------
/CONSTANT-TABLE (4 WORDS PER ENTRY, FROM 6400 DOWNWARDS)
/--------------
/ARRAY-TABLE (8 WORDS PER ENTRY, MAX. 64 ENTRIES)
/-----------
6400 ATAB=6400
/ /WORD 0 UNUSED!
6401 INXTYP=ATAB+1 /WORD 1
6402 ELTYP=ATAB+2 /WORD 2
6403 ELREF=ATAB+3 /WORD 3
6404 LOW=ATAB+4 /WORD 4
6405 HIGH=ATAB+5 /WORD 5
6406 ELSIZE=ATAB+6 /WORD 6
6407 SIZE=ATAB+7 /WORD 7
/BLOCK-TABLE (4 WORDS PER ENTRY, MAX. 64 ENTRIES)
/-----------
7400 BTAB=7400
7400 LAST=BTAB /WORD 0
7401 LASTPAR=BTAB+1 /WORD 1
7402 PSIZE=BTAB+2 /WORD 2
7403 VSIZE=BTAB+3 /WORD 3
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 4
/A S S E M B L E R D E F I N I T I O N S:
7301 L0001=CLA CLL IAC
7326 L0002=CLA STL RTL
7325 L0003=CLA STL IAC RAL
7307 L0004=CLA CLL IAC RTL
7327 L0006=CLA STL IAC RTL
7303 L0100=CLA CLL IAC BSW
7332 L2000=CLA STL RTR
7330 L4000=CLA STL RAR
7340 L7777=CLA CLL CMA
7344 L7776=CLA CLL CMA RAL
7346 L7775=CLA CLL CMA RTL
7350 L3777=CLA CLL CMA RAR
7352 L5777=CLA CLL CMA RTR
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 5
/A R I T H M E T I C D E F I N I T I O N S:
/MEMORY REFERENCED INSTRUCTIONS:
0000 FIXMRI GET=0000
1000 FIXMRI ADD=1000
2000 FIXMRI SUB=2000
3000 FIXMRI MUL=3000
4000 FIXMRI DIV=4000
5000 FIXMRI MOD=5000 /ALSO: JMP=5000
6000 FIXMRI PUT=6000
/OPERATE CLASS INSTRUCTIONS:
7200 NORM=7200 /REAL
7201 READREAL=7201
7202 WRITEREAL=7202
7203 TRUNC=7203
7206 ROUND=7206
7205 RSQUARE=7205
7204 ZERO=7204 /BOTH TYPES
7000 ABSVAL=7000
7004 NEGATE=7004
7006 WRITELINE=7006
7001 READINTEGER=7001 /INTEGER
7002 WRITEINTEGER=7002
7003 FLOAT=7003
7005 ISQUARE=7005
/SKIP - INSTRUCTIONS:
7410 SKIP=SKP
7440 SKEQ=SZA
7450 SKNE=SNA
7500 SKLT=SMA
7540 SKLE=SMA SZA
7550 SKGT=SPA SNA
7510 SKGE=SPA
4444 AAAAAA=JMS I 44 /ENTER MACRO MODE
0000 EEEEEE=0000 /RETURN TO PDP8 MODE
0177 INT=0177
7777 REAL=7777
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 6
/C O M P I L E R D E F I N I T I O N S:
DECIMAL
/S Y M B O L S:
0000 INTCON=0
0001 REALCON=1
0002 CHARCON=2
0003 STRING=3
0004 NOTSY=4
0005 PLUS=5
0006 MINUS=6
0007 TIMES=7
0010 IDIVSY=8
0011 RDIVSY=9
0012 IMODSY=10
0013 ANDSY=11
0014 ORSY=12
0015 EQL=13
0016 NEQ=14
0017 GTR=15
0020 GEQ=16
0021 LSS=17
0022 LEQ=18
0023 LPARENT=19
0024 RPARENT=20
0025 LBRACK=21
0026 RBRACK=22
0027 COMMA=23
0030 SEMICOLON=24
0031 PERIOD=25
0032 COLON=26
0033 BECOMES=27
0034 CONSTSY=28
0035 TYPESY=29
0036 VARSY=30
0037 FUNCTIONSY=31
0040 PROCEDURESY=32
0041 ARRAYSY=33
0042 RECRDSY=34
0043 PROGRAMSY=35
0044 IDENT=36
0045 BEGINSY=37
0046 IFSYM=38
0047 CASESY=39
0050 REPTSY=40
0051 WHILSY=41
0052 FORSY=42
0053 ENDSY=43
0054 ELSESY=44
0055 UNTILSY=45
0056 OFSY=46
0057 DOSY=47
0060 TOSY=48
0061 DOWNTOSY=49
0062 THENSY=50
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 6-1
/O B J E C T S:
0000 KONSTANT=0
0001 VARIABLE=1
0002 TYPE1=2
0003 PROZEDURE=3
0004 FUNKTION=4
/T Y P E S:
0000 NOTYP=0
0001 INTS=1
0002 REALS=2
0003 BOOLS=3
0004 CHARS=4
0005 ARRAY=5
0006 RECORD=6
/P R O C E D U R E S:
0000 BLOCK=0
0001 STATEMENT=1
0002 ASSIGNMENT=2
0003 COMPOUNDSTATEMENT=3
0004 IFSTATEMENT=4
0005 CASESTATEMENT=5
0006 REPEATSTATEMENT=6
0007 WHILESTATEMENT=7
0010 FORSTATEMENT=8
0011 STANDPROC=9
0012 SELECTOR=10
0013 CALL=11
0014 STANDFCT=12
0015 FACTOR=13
0016 TERM=14
0017 SIMPLEEXPRESSION=15
0020 EXPRESSION=16
0021 CONDECLARE=17
0022 TYPDECLARE=18
0023 VARDECLARE=19
0024 PRODECLARE=20
0025 CONSTANT=21
0026 ARRAYTYP=22
0027 TYPE=23
0030 PARAMETERLIST=24
0031 ONECASE=25
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 6-2
/P R O G R A M P A R A M E T E R S:
1000 TMAX=512 /MAX. NUMBER OF IDENTIFIERS
0100 AMAX=64 /MAX. NUMBER OF ARRAYS
0100 BMAX=64 /MAX. NUMBER OF BLOCKS (PROCEDURES+RECORDS)
3674 CMAX=1980 /MAX. SIZE OF INTERMEDIATE CODE
0036 CSMAX=30 /MAX. NUMBER OF CASES
0020 LMAX=16 /MAX. NUMBER OF LEVELS
0120 LLNG=80 /MAX. LENGTH OF INPUT LINE
0010 ALNG=8 /NO. OF SIGNIFICANT CHAR'S IN IDENTIFIERS
OCTAL
/ F U N C T I O N S:
00447 3514 STDFUNCT,XABS /0
00450 3514 XABS /1
00451 4343 XISQU /2
00452 4347 XRSQU /3
00453 2115 XODD /4
00454 0567 XCHR /5
00455 0444 STFJMS /6
00456 0561 XSUCC /7
00457 0564 XPRED /8
00460 2545 XROUND /9
00461 2523 RTRUNC /10
00462 5234 XSIN /11
00463 5141 XCOS /12
00464 5000 XEXP /13
00465 4600 XLOG /14
00466 4400 XSQRT /15
00467 5400 XATN /16
00470 0551 XEOF /17
00471 0554 XEOLN /18
00472 2066 XRAND /19
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 39
/THE ORGANIZATION OF THE FOLLOWING PAGES OF FIELD 0
/DEMANDS SOME EXPLANATION:
/ AT COMPILE TIME / AT RUNTIME /
/ / /
/06000--------------------------/-------------------------------/
/ STARTUP CODE, THEN / /
/ / I N P U T /
/06200- I N P U T (SOURCE) -----/----- -----/
/ F I L E B U F F E R / F I L E B U F F E R /
/ / /
/06400--------------------------/-------------------------------/
/ / ** INPUT /
/ I N P U T (SOURCE) / DEVICE HANDLER /
/06600- -----/-------------------------------/
/ D E V I C E / OUTPUT /
/ H A N D L E R / DEVICE HANDLER /
/07000--------------------------/-------------------------------/
/ / /
/ COMPILER PROCEDURES: / O U T P U T /
/07200----- -----/----- -----/
/ I N S Y M B O L / F I L E B U F F E R /
/ / /
/07400----- AND -----/-------------------------------/
/ / RUNTIME ERRORS /
/ N E X T C H / /
/-------------------------------/-------------------------------/
/AT COMPILATION TIME FOUR PAGES OF FIELD 6 ARE USED AS FOLLOWS:
/66400--- TEMPORARY STORAGE OF INPUT DEVICE HANDLER
/
/66600--- TEMPORARY STORAGE OF OUTPUT DEVICE HANDLER
/
/67400--- RUNTIME ERRORS
/
/67600--- INITIALIZATION OF RUNTIME SYSTEM
/DURING INITIALIZATION OF THE RUNTIME SYSTEM
/THE FIRST THREE PAGES ARE SWAPPED INTO THEIR PLACE IN FIELD 0!
** THE INPUT HANDLER MAY OCCUPY 2 CORE PAGES IF THERE IS NO RUNTIME
OUTPUT HANDLER. THE OUTPUT HANDLER MAY NEVER BE A 2-PAGER.
RUNTIME INPUT & OUTPUT DEFAULT TO INTERNAL TTY: HANDLERS.
P A S C A L - S PAL8-V12A 31-JAN-83 PAGE 40
/#############################################################/
/#############################################################/
/##### #####/
/##### S T A R T #####/
/##### #####/
/#############################################################/
/#############################################################/
/IMPORTANT POINTS OF PROGRAM FLOW:
/S T A R T (06000) /STARTING ADDRESS OF ENTIRE SYSTEM,
/PROCESS I/O-SPECIFICATIONS
/M A I N (40200) /START OF COMPILER PROGRAM
/E X P L A I N (60200) /COMPILATION REPORT
/I N I T (67600) /INITIALIZATION OF RUNTIME SYSTEM
/I S T A R T (00200) /START OF INTERPRETER
/ONCE ONLY CODE!!!
0200 USR=200
6000 *IBUFFER
06000 7300 START, CLA CLL /S T A R T I N G A D D R E S S
06001 6212 CIF 10
06002 4575 JMS I [7700 /LOCK USR IN MEMORY
06003 0010 10
06004 1377 TAD (1000 /RESET JOB STATUS WORD
06005 3776 DCA I (7746
06006 6212 CD, CIF 10
06007 4775 JMS I (USR /CALL THE COMMAND DECODER
06010 0005 5
06011 2023 2023 /ASSUMED INPUT EXTENSION: .PS
06012 4774' JMS HEADER
06013 6211 CDF 10
06014 1773 TAD I (7600
06015 7450 SNA /OUTPUT FILE SPECIFIED?
06016 5263 JMP NOOUT
06017 3133 DCA DEVNO /YES, SAVE DEVICE NUMBER
06020 1373 TAD (7600
06021 3010 DCA XR10
06022 1410 TAD I XR10 /TRANSFER THE FILENAME
06023 3127 DCA NAME
/ 6136 -- 6157 are currently free on this page, for once-only use.