perm filename LOWSEG.MAC[SIM,SYS] blob sn#460119 filedate 1979-07-20 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00010 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00003 00003		SUBTTL	GLOBAL DATA AREAS
C00005 00004	  THE FOLLOWING DATA AREAS ARE NOT RESET BETWEEN COMPILATIONS:
C00007 00005	YZEROB::
C00011 00006		SUBTTL	PASS1 DATA AREAS
C00016 00007		SUBTTL	PASS 2 AND 3 VARIABLES
C00018 00008		SUBTTL	PASS 2 VARIABLES
C00027 00009		SUBTTL	PASS 3 DATA AREAS
C00033 00010		END
C00034 ENDMK
C⊗;

COMMENT;
AUTHOR:		CLAES WIHLBORG
VERSION:	12/LE
CONTENTS:	COMPILER DATA AREAS
;

	SEARCH SIMMAC
	SALL
	CTITLE	LOWSEG
	SUBTTL	GLOBAL DATA AREAS

;THE FOLLOWING DATA AREAS ARE NOT PRESENT IN PRODUCTION VERSION

	IFN	<QDEBUG>,<
	LOC	5000	; TO ACCOMMODATE DDT FOR OTHER PASSES
	; SET BREAKS HERE FOR DDT CONTROL AFTER  SEGMENT SWITCHES
	YP1IN::	RETURN
	YP2IN::	RETURN
	YP3IN::	RETURN
	>
IFN	<QDEBUG>,<
; DEBUG SWITCHES
YCADB::		Z
YCGDB::		Z
YM2DB::		Z
YDBRTA::	Z
YDBRTC::	Z
YO2DB::		Z
YO2DBZ::	Z	; SAVES ZQU FROM GETAD TO GENOP FOR DEBUG OUTPUT
>

YTIMER::	BLOCK	1	;???

IFN QTRACE,<
;*************** TRACE DATA *************
YTRSAV::	BLOCK	2
YTRPAS::	EXP	0,0,0,0
YTRLC::		BLOCK	1
YTRJLC::	BLOCK	1
YTRINS::	BLOCK	1
YTRTP::		BLOCK	1
QTRTAB==52000
YTRACC=:.+0+QTRTAB
YTRLOW=:.+1+QTRTAB
YTRHGH=:.+2+QTRTAB
YTRSIM=:.+3+QTRTAB
YTRTAB=:.+3+400+QTRTAB
;*************** END TRACE **************
>
;  THE FOLLOWING DATA AREAS ARE NOT RESET BETWEEN COMPILATIONS:

YCBBH::		BLOCK	3	;COMMAND BUFFER HEADER
YCBUF::		BLOCK	QBUFS	;COMMAND BUFFER
YI1CB::		BLOCK	↑D27	;COMMAND LINE BUFFER
				;ROOM FOR 135 CHARACTERS
YI1CBE::
YI1P::		BLOCK	1	;POINTER TO YI1CB
YI1P1::		BLOCK	2	;CONTAINS POINTER AND DELIMITER TO SWITCHES AFTER SOURCE
YSWITCH::	BLOCK	1	;WORD CONTAINING GLOBAL SWITCHES
YSWDEF::	BLOCK	1	;CONTAINS DEFAULT VALUES OF CERTAIN SWITCHES
YSWCHA::	BLOCK	1	;CONTAINS VALUE OF CHANGED SWITCHES

;I/O BUFFERS

YBRBUF::	BLOCK	1
YBRSRC::	BLOCK	1
YBRZSE::	BLOCK	1

DEFINE ELBH(FILE)<
IRP FILE,<
YEL'FILE::	BLOCK	4	;;ENTER/LOOKUP BLOCK
YBH'FILE::	BLOCK	3	;;BUFFER HEADER
>
>
ELBH(<IC1,DF1,LS1,ZSE,XRF,SRC,EXT,ATR,IC2,REL,LS3>)

DEFINE BUFFER(NO)<
IRP NO,<
Y'NO'BUF::	BLOCK	QBUFS+1>
>

BUFFER(<1,2,33,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18>)

IFG QDEBUG,<
YDEBH::YDEBH::YO2DBB::YO1DBB::
YBHDEB::	BLOCK	3
YO1DBL::YELDEB::	BLOCK	4
YBUF1::
YBUFR7::	BLOCK	2*<QBUFS+1>
>
YZEROB::

;  START OF DATA AREA THAT IS RESET BETWEEN COMPILATIONS
;  YZEROB SHOULD ALWAYS BE THE FIRST ITEM IN THIS AREA


YJOB::		BLOCK	1	;JOB NUMBER
YRELBL::	BLOCK	1	;[030406] Last filled block for rel file [RH],
				;left half negative for global class/proc

YMAXFX::			;INDEX OF HIGHEST FIXUP ALLOCATED
YSRFIX::	BLOCK	1
YMAXID::			;NUMBER OF DIFFERENTLY SPELLED IDENTIFIERS
YSHNID::	BLOCK	1
YREL::
YBREAK::	BLOCK	1	;AMOUNT OF CODE OUTPUT ON THE REL FILE
YO1CNB::
YO2CNB::	BLOCK	1	;BLOCK COUNTER IN CODE ITEM
YO1ACN::
YO2ACN::	BLOCK	1	;ADDRESS OF CODE ITEM COUNTER
YSIMNAME::	BLOCK	1	;[130012] Radix50 SIMULA name of global module
YATRFIL::	BLOCK	1	;[130012] Radix50 ATR file name - " -
		BLOCK	4	;[130012] Spare cells (YRUNPR eliminated)
Y3SWAP::	BLOCK	↑D25	;SPACE FOR SWAPPING CODE
YERRCT::	BLOCK	1	;NUMBER OF ERRORS ENCOUNTERED
YWARCT::	BLOCK	1	;NUMBER OF WARNINGS ENCOUNTERED
YOLINE::
YELIN1::	BLOCK	1	;NUMBER OF FIRST LINE IN ERROR MESSAGE
YLINE::
YELIN2::	BLOCK	1	;NUMBER OF LAST LINE IN ERROR MESSAGE
YSTATM::
YESEM::		BLOCK	1	;NUMBER OF SEMICOLONS ON CURRENT LINE
YECHDM::	BLOCK	1	;START OF CHAIN OF ERRORS WHERE LAST LINE MISSING
		BLOCK	3	;DUMMY HEADER ZDM
ZDM::		BLOCK	QLDM
		BLOCK	3	;DUMMY TAIL ZDM
YDMEND::	BLOCK	1	;INDEX TO FIRST FREE PLACE IN DM
YPROCI::	BLOCK	1	;??PASS2
YTEXTI::	BLOCK	1	;??PASS2
YSIMUI::	BLOCK	1	;??PASS2
YSYSI::		BLOCK	1	;??PASS2
YSYSO::		BLOCK	1	;??PASS2
YEXTS::		BLOCK	12
YEXENT::	BLOCK	1	;ENTRY OF EXTERNAL MACRO/FORTRAN PROCEDURE
YSWRF::		BLOCK	8
YSWCCL::	BLOCK	1
YBEGNO::	BLOCK	1	;NUMBER OF BEGIN IN SOURCECODE
YENDNO::	BLOCK	1
ZLEREC::	BLOCK	1	;PROTOTYPE FOR TYPE 4 RECORD IN LS1
				;USED BY PASS 1 AND PASS 3
YMPSIZ::	BLOCK	1	;SIZE OF MAIN PROGRAM IN CASE OF
				;OUTERMOST BLOCK BEING REDUCED
YLCSTA::	BLOCK	1
YLTIND::	BLOCK	1	;POINTER TO YLTAB
YLTAB::		BLOCK	↑D40	;TABLE WITH LOOKUP-BLOCKS AND DEVICE NAME
YSTK::		BLOCK	QSTSIZ	;PUSH DOWN STACK
Y1MASK::	BLOCK	1	;SWITCHES IN X1MASK SAVED TO PASS 3
Y3OPEN::	BLOCK	1	;SWITCHES FOR STATUS OF FILES

	QLOC=.
	SUBTTL	PASS1 DATA AREAS

;O1 MODULE

YO1RBP::	BLOCK	1	;BYTE POINTER TO RELOCATION BITS
YO1DFC::	BLOCK	1	;INITIAL SIZE OF DF1 CORE FILE

;SM MODULE

YSMLIN::	BLOCK	1	;LINE NO WHERE CURRENT STATEMENT STARTS
YSMSEM::	BLOCK	1	;SEMICOLON PRECEDING CURRENT STATEMENT

;SD & DP MODULE

YRQHEAD::	BLOCK	1	;[13] Head of ZRQ chain (file def's)
YBSTP::		BLOCK	1	;CURRENT STACK LEVEL (POINTER TO YDPD)
YBSTE::		BLOCK	1	;???
YASTR::		BLOCK	1	;POINTER TO ARRAY SEGMENT START
YDLV::		BLOCK	1	;COMPILATION LEVEL OF THIS MODULE
YRFLAG::	BLOCK	1	;???
YSDENL::	BLOCK	6	;LINKAGE LIST USED BY SDEND
YDPD::		BLOCK	100*QSTLL	;BLOCK STACK
YC1DC::		BLOCK	1	;POINTER TO NEXT FREE DC RECORD
YDPATH::			;TEMP STORAGE OF ATTRIBUTE-FILE HEADER
YSRIN::		BLOCK	1	;NAME OF EXTERNAL MODULE
YDPZQQ::			;START OF ZQQ-RECORDS
YSRDEV::	BLOCK	1	;DEVICE OF ATR-FILE
YSREN::				;NAME OF ATR-FILE
YDPSOL::	BLOCK	1	;SOURCE LEVEL OF EXTERNAL MODULE
YSRPPN::			;PPN OF ATR-FILE
YDPLIN::	BLOCK	1	;LINE OF DECLARATION OF EXTERNAL MODULE
YDPZUC::	BLOCK	1	;START LINK OF ZUC-RECORDS
YDPFUN::	BLOCK	1	;FIRST UNIQUE NO IN CURRENT EXTERNAL
YDPLUN::	BLOCK	1	;LAST  UNIQUE NO IN CURRENT EXTERNAL
YDPUNR::	BLOCK	1	;START LINK OF REQUESTED EXTERNALS

;LS MODULE

YLSVAL::	BLOCK	2	;VALUE OF CONSTANT
YLSNPM::	BLOCK	1	;DECIMAL POINT MARKER
YLSNSD::	BLOCK	2	;NUMBER OF DIGITS AFTER OVERFLOW
YLSNLS::	BLOCK	1	;NEXT    COUNTER:LINE & SEMICOLON
YLSCLS::	BLOCK	1	;CURRENT   -"-
YLSLLS::	BLOCK	1	;LAST      -"-

;P1DUMP MODULE

IFG QDEBUG,<
P1PAGE::	BLOCK	1	;PAGE COUNT
P1LINE::	BLOCK	1	;LINE COUNT
P1TAB::		BLOCK	1	;POSITION ON CURRENT LINE (NO OF TABS LEFT)
P1HEAD::	BLOCK	1	;POINTER TO PAGE HEADER
P1Z::		BLOCK	5	;TEMPORARY STORAGE OF DF1-RECORD
>

;LC MODULE

YLCLB::		BLOCK	34	;SOURCE LINE BUFFER
YLCLBE::	BLOCK	1	;END OF YLCLB
YLCRT4::	BLOCK	1	;LS1 TYPE 4 RECORD BUFFER
YLCBEG::	BLOCK	1	;TOTAL NO OF BEGINS SO FAR
YLCEND::	BLOCK	1	;TOTAL NO OF ENDS SO FAR
YLCADR::	BLOCK	1	;RELATIVE ADDRESS TO CR IN YLCLB
YLCLBS::	BLOCK	1	;POINTER TO FIRST BYTE IN CURRENT LINE
YLCLN::		BLOCK	1	;SWITCH WORD
YLCLNO::	BLOCK	1	;LINE NUMBER FROM SOURCE

;I1 MODULE

YI1SNN::	BLOCK	1	;NUMBER PRECEDING COMPILER SWITCH
YI1SWF::	BLOCK	1	;FIRST SOURCE SWITCH
YI1SWP::	BLOCK	1	;BYTE POINTER TO YI1SNN
YI1SWN::	BLOCK	4	;SWITCH NAME USED IN ERROR MESSAGES
YI1CRC::	BLOCK	1	;CONTROL RECORD TO LS1
YI1FN::		BLOCK	6	;FILE SPECIFICATION RECORD
YI1PS::		BLOCK	1	;SWITCH WORD

YRQDEV=:	YI1FN	;[13]
YRQFIL=:	YI1FN+1	;[13]
YRQPPN=:	YI1FN+4	;[13]
YEXNAM=:	YI1FN+2	;[13]

YZEROE::

;SH MODULE

ZHT::		BLOCK	200	;HASH TABLE
ZSE1::		BLOCK	QNRESW+QZSELE	;IDENTIFIER TABLE: FIRST SIX CHARS
ZSE2::		BLOCK	QNRESW+QZSELE	;	"	 : LAST  SIX CHARS
ZSE3::		BLOCK	QNRESW+QZSELE	;	"	 : LINK HIGHER,,LINK LOWER

;START DYNAMIC DATA AREA

DC1::		BLOCK	QDC1LE	;DECLARATION TABLE
Y1LOWE::			;END OF PASS 1 INITIAL
	SUBTTL	PASS 2 AND 3 VARIABLES

IFG QDEBUG,<LOC QLOC>
IFE QDEBUG,<RELOC QLOC>
	Y2START=:QLOC

;	THE COMPONENTS OF THE RELOCATION COUNTER
;	TABLE MUST NOT BE REORDERED WITHOUT CHANGES TO QREL?? (RELOCATION BYTES IN MC2)
;
YNOREL=:.-1		; START OF RELOCATION COUNTER TABLE
YRELNO=YNOREL
YRELCN::	BLOCK	1	;NUMBER OF WORDS OUTPUT ON THE REL FILE
YRELCD::	BLOCK	1	; NUMBER OF WORDS OUTPUT TO INSTRUCTION CODE STREAM
YRELPT::	BLOCK	1	; NUMBER OF WORDS OUTPUT TO PROTOTYPE STREAM
YRELLT::	BLOCK	1	; NUMBER OF WORDS OUTPUT TO LINE NUMBER TABLES
YRELST::	BLOCK	1	; NUMBER OF WORDS OUTPUT TO SYMBOL TABLES
;
;	END OF RELOCATION COUNTER TABLE
;
YDCSTP::	BLOCK	1	; POINTER TO FIRST FREE WORD AFTER DECLARATION STACK
YDCSTO::	BLOCK	1	; POINTER TO WORD FOLLOWING DECLARATION STACK SPACE
YRDSTO::			; WORD FOLLOWING REDECLARATION STACK AND
YDCSTB::	BLOCK	1	; POINTER TO BASE OF DECLARATION STACK
YCANTRY::	BLOCK	1	; PROGRAM ENTRY POINT RELATIVE REL ORIGIN
YCADLV::	BLOCK	1	; LEVEL OF SIMULATION/SIMSET

	QLOC2=.
	SUBTTL	PASS 2 VARIABLES

YCABKB::	BLOCK	1	; BASE OFFSET IN OBJ CODE OF OUTERMOST BLOCK
YCALID::	BLOCK	1	; LEXICAL ID NO USED IN CA
YCAMTC::	BLOCK	1	; POINTS TO MATCHING VIRTUAL ZQU OR IS ZERO
YCAPLE::	BLOCK	1	; PREFIX LEVEL
YCAQND::	BLOCK	1	; USED TO POINT TO END OF ZQU LIST
YCASM::		BLOCK	1
YCATYE::	BLOCK	1	; HOLDS FLAG FOR TYPE ERROR IN CARL
YCAVRT::	BLOCK	1	; NUMBER OF VIRTUALS
YCAZHE::	BLOCK	1	; VALUE OF XZHE AT START OF CAEB ACTIONS
YCAZMP::	BLOCK	4	; MAP OF SUBBLOCK IN CA
YCA1SC::	BLOCK	1	; LOCATION FOR SCAN1 SWITCH IN CARL
YCERFL::	BLOCK	1	; EXPRESSION ERROR FLAG (LOCAL ERROR)
YCGACT::	BLOCK	1	; VALUE OF TOP ACCUMULATOR SHIFTED TO AC POSITION.
				; SET AFTER CGG2 ETC.
YCGDBL::	BLOCK	1	; =1 IF TWO WORDS TO BE MOVED TO FORMAL PARAMETER LOC.
YCGFOX::	BLOCK	1	; VARIABLE USED IN FOR STATEMENT GENERATION
YCGFX1::	BLOCK	1	; USED TO SAVE A FIXUP NUMBER
YCGFX2::	BLOCK	1	; USED TO SAVE A FIXUP NUMBER
YCGICR::	BLOCK	1	; RELAD OF FOR STATMT INCREMENT COMPUTING ROUTINE
YCGINS::	BLOCK	1	; USED TO BUILD AN INSTRUCTION
YCGISG::	BLOCK	1	; SIGN OF FOR INCR: +1-POS, -1-NEG,
				; 0- NOT KNOWN AT COMPILE TIME
YCGNAC::	BLOCK	1
YCGPAF::	BLOCK	1	; USED IN PARAMETER HANDLING
YCGSK::		BLOCK	1
YCGSWC::	BLOCK	1	; LEFT HALF: CURRENT SWITCH FIXUP, RIGHT HALF: ELEMENT COUNT
YCGXAC::	BLOCK	1
YFORSI::	BLOCK	1	; NON-ZERO IF %FORSI WAS PART OF CURRENT FOR LIST
YO2ADF::	BLOCK	1	; SIGNIFIES IF YO2ADI IS A FIXUP TYPE INSTR (-1)
				; ABSOLUTE INSTR (0) OR RELOCATED (1)
YO2ADI::	BLOCK	1	; INSTRUCTION BUILT UP BY O2AD (EXCEPT OPCODE)
YO2IQI::	BLOCK	1	; CURRENT INDEX OF YO2IQB, FIRST FREE PLACE
YO2LAS::	BLOCK	1	; CHAIN START FOR LAST AND REDEFINABLE FIXUP
		BLOCK	1	; VALUE FOR LAST AND REDEFINABLE FIXUP
YO2FIX::	BLOCK	1	; NEGATIVE LEFT HALF MEANS RIGHT HALF IS
				; ADDRESS OF REDEFINABLE FIXUP ENTRY
YO2DFW::	BLOCK	1	; BUFFERS CURRENT WORD OF DF1
YO2CDP::	BLOCK	4	; PARAMETER BLOCKS FOR THE DIFFERENT CODE STREAMS
YO2PTP::	BLOCK	4
YO2LTP::	BLOCK	4
YO2STP::	BLOCK	4
YO2STS::	BLOCK	1	; STATUS OF I/O CHANNEL AFTER ERROR
YO2CNC::	BLOCK	1
YO2LII::	BLOCK	1	; LITERAL TABLE INDEX
YO2LIR::	BLOCK	1	; RELAD OF CURRENT LITERAL TABLE START
YO2LIT::	BLOCK	1	; NUMBER OF LITERALS FOLLOWING SYMBOL IN IC1

YO2LIB::	BLOCK	QO2LIS	; LITERAL TABLE

;  BUFFERS FOR CODE OUTPUT

YO2CDB::	BLOCK	QBUFS-3
YO2IQB::	BLOCK	QBUFS-3
YO2PTB::	BLOCK	QBUFS-3
YO2LTB::	BLOCK	QBUFS-3
YO2STB::	BLOCK	QBUFS-3
YO2ITB::	BLOCK	QBUFS-3		; BUFFERS FIXUP REQUESTS

YORDLV::	BLOCK	1	; DISPLAY LEVEL
YORFOR::	BLOCK	1	; COPY OF ZID OF CONTROL VARIABLE IN FOR LOOP
		BLOCK	1	; - " - ,SECOND WORD
YELEV::		BLOCK	1	; EFFECTIVE LEVEL OF XCB AT RUN TIME
YEXPL::		BLOCK	1	; ADDRESS OF WORD FOLLOWING TREE AREA
YEXPP::		BLOCK	1	; ADDRESS OF FIRST USED WORD IN TREE AREA
YFOP::		BLOCK	1	; ADDRESS OF FIRST OPERAND IN OPERAND  STACK (USED IN OR)
YFXCH::		BLOCK	1	; START OF CHAIN OF AVAILABLE FIXUPS USED IN O2
YFXTAB::	BLOCK	1	; ADDRESS OF FIXUP TABLE
YGAP::		BLOCK	1	; TARGET RELOCATION COUNTER FOR O2GA
YLINK::		BLOCK	1	; START OF CHAIN THROUGH CGVA/CGAD CALLS TO THE ROOT
YLXIAC::	BLOCK	1	; EFFECTIVE LEVEL OF DISPLAY LOADED TO XIAC AT RUN TIME
IFN <QDEBUG>,<
YMESS::		BLOCK	1	;MESSAGE IS SAVED HERE BY M2UU
YM2DBC::	BLOCK	1	; YRELCD IS KEPT HERE TO SEE IF CODE HAS BEEN
				; OUTPUT BETWEEN TWO LINE SYMBOLS
YM2DADR::	BLOCK	6	; DAEMON PARAMETER LIST>
YM2EWS::	BLOCK	1	; SUM OF WARNING AND ERROR MESSAGES AT START OF STATEMENT
YNOPD::		BLOCK	1	; NUMBER OF OPERANDS PROCESSED IN OR
YNZCN::		BLOCK	1	; NUMBER OF ZCN OPERANDS
YNZID::		BLOCK	1	; NUMBER OF ZID OPERANDS
YNZNS::		BLOCK	1	; NUMBER OF ZNS OPERANDS
YOPCOD::	BLOCK	1	; OPCODE TO BE OUTPUT BY O2GI
YOPSTB::	BLOCK	1	; ADDRESS OF FIRST WORD OF OPERAND STACK
YOPSTP::	BLOCK	1	; OPERAND STACK POINTER (PUSHDOWN POINTER WITH
				; OVERFLOW CHECK)
YORACT::	BLOCK	1	; ACTIVATE CODE MASK SAVED IN OREN
YORFX::		BLOCK	1	; FIXUP SAVED IN OREN
YORLID::	BLOCK	1	; HOLDS LID FOR DIAGNOSTICS
YORZHB::	BLOCK	1	; ZHB POINTER FOR INSPECTION AND PREFIXED BLOCK
YORZQU::	BLOCK	1	; ZQU POINTER SAVED IN OREN
YORPAR::	BLOCK	1	; SWITCH USED TO DECIDE IF THE OUTERMOST
				; EXPRESSION WAS ENCLOSED BY PARENTHESES
YPAFIX::	BLOCK	1	; USED BY CGPA FOR SAVING FIXUP FOR ADDRESS
				; AFTER A THUNK
YQREL::		BLOCK	1	; PARAMETER TO O2
YQRELL::	BLOCK	1	; LEFT RELOCATION BYTE FOR O2GR (GENREL)
YQRELR::	BLOCK	1	; RIGHT HALFWORD RELOCATION
YQRELT::	BLOCK	1	; TARGET RELOCATION
YRDSTB::	BLOCK	1	; ADDRESS OF FIRST WORD OF REDECLARATION STACK
YRDSTP::	BLOCK	1	; REDECLARATION STACK POINTER. UPDATED BY CADS AND CAUD.
YSTEPP::	BLOCK	1	; RIGHT HALF: YFOP, LEFT HALF: -(NUMBEROPDS*2-1)
YSTKNU::	BLOCK	1	; CONTROLS STACKING IN ORRP
YTAC::		BLOCK	1	; ADDRESS TO THE DESCRIPTOR OF THE TOP ACCUMULATOR
YTENT::		BLOCK	1	; FLAG USED FOR O2 COMMUNICATION (O2DF, O2RF)
YZHBXC::	BLOCK	1	; POINTER TO ZHB CORRESPONDING TO XCB CONTENTS AT RUN TIME
YZHET::		BLOCK	1	; POINTER TO CURRENTLY INNERMOST ZHB OR ZHE RECORD
YUNDEC::	BLOCK	4	; UNDECLARED ID ZQU POINTER
YACTAB::	BLOCK	2*QNAC
	YACTAE=:.
; FIX ALLOCATED AREAS
YBKST::	BLOCK	100	; BLOCK	STACK
	QBKSTZ=:YBKST-.
YOPST::	BLOCK	700	; OPERAND STACK
	QOPSTZ=:YOPST-.
	BLOCK	63	;[43]THIS CAN BE USED FOR PATCHES IN PASS 2
YO2CIQ::	BLOCK	1	;[43] CURRENT IQ BUFFER POINTER
YO2ZSD::	BLOCK	1	;LINK TO SYMBOL TABL COMMUNICATED BETWEEN O2SM AND CAMM
YLSLIN::	BLOCK	1	;LAST LINE FOR WHICH A LINE TABLE ENTRY HAS BEEN OUTPUT(O2LN2)
YO2LNB::	BLOCK	1	; OFFSET OF LAST ZLN ENTRY OF BLOCK TYPE IN LINE TABLE
YBKSTP::	BLOCK	1	; BLOCK STACK POINTER (PUSHDOWN POINTER WITH OVERFLOW CHECK)
YDICT::	BLOCK	700	; DICTIONARY START
YDICTB=:<YDICT-QLOWID>	; DICTIONARY BASE
YPAS2E=:.
	SUBTTL	PASS 3 DATA AREAS

IFG QDEBUG,<LOC QLOC2>
IFE QDEBUG,<RELOC QLOC2>



Y3ERRL::	BLOCK	4	;LOOKUP ARG SIMERR.ERR

YE3SW::		BLOCK	1	;WORD CONTAINING SWITCHES

;DATA MODULE E3

YZDM::		BLOCK	QLDM	;BUFFER USED WHEN SORTING ZDM
YZDMI::		BLOCK	QLDM/3	;BUFFER USED WHEN SORTING ZDM
Y3LINH::	BLOCK	3	;BUFFER TO START ADDRESS OF LINE USED IF ERROR ON LINE
YE3PGH::	BLOCK	20	;BUFFER FIRST PART OF STANDARD TEXT PAGE HEADER
YE3PNM::	BLOCK	13	;BUFFER SECOND PART OF TEXT PAGE HEADER
Y3BUF::		BLOCK	↑D19	;BUFFER TO STORE INTERMEDIATE DATA
YE3ERR::	BLOCK	↑D30	;BUFFER ERRORMESSAGE
YE3LIN::	BLOCK	↑D30	;LINE BUFFER
YE3LIP::	BLOCK	1	;BYTE POINTER YE3LIN 7 BIT BYTE
YE3LNO::	BLOCK	1	;CURRENT LINE NUMBER
YE3RUB::	BLOCK	14	;PAGE HEADING GIVEN IN PAGE SWITCH
YE3NRU::	BLOCK	1	;RH= NUMBER OF WORDS IN YE3RUB,
				;LH=-1  AFTER A PAGE SWITCH
YBEGST::	BLOCK	QBEG	;STACK BEGIN NUMBER
YBEGSP::	BLOCK	1	;STACK POINTER YBEGST
YE3BEG::	BLOCK	1	;NUMBER OF BEGINS GENERATED
YE3END::	BLOCK	1	;END NUMBER OF CURRENT LINE
YE3PNN::	BLOCK	1	;NUMBER OF BYTES IN SECOND PART OF HEADER IN LIST
YE3LS3::	BLOCK	1	;NUMBER OF BYTES THAT ARE TO BE OUTPUT TO LS3,
				;USUALLY NUMBER OF BYTES IN YE3LIN
YE3PAG::	BLOCK	1	;NUMBER OF LINES PER PAGE
YE3PNO::	BLOCK	1	;NUMBER OF LINES LEFT ON CURRENT PAGE TO PRINT
YE3PGN::	BLOCK	1	;LH= MAIN NUMBER OF PAGE
				;RH= SECONDARY NUMBER OF PAGE
YDMB2::		BLOCK	1	;FOR SORTING ZDM
YDMPT3::	BLOCK	1
YSIXB::		BLOCK	1
Y3DEV::		BLOCK	1	;DEVICE OF SOURCE IN SIXBIT FORMAT


;DATA MODULE M3

Y3REL::		BLOCK 7		;INITIAL START ADDR OF DIFFERENT STREAMS
Y3PLTE::	BLOCK	1	;POINTER END OF LINE NUMBER TABLE
Y3PLTS::	BLOCK	1	;POINTER START OF LINE NUMBER TABLE
				;WORD 1=0 FOLLOWED BY ADDR OF
				;CODE,CONST,PROT LINE,SYMB
YM3B::		BLOCK	QBUFS-3+↑D18	;LOCAL BUFFER FOR THE DIFFERENT STREAMS
					;MAX 18 DATA WORDS TERMINATE THE BUFFER
YM3BI::		BLOCK	1	;INDEX OF YM3B
YM3BRP::	BLOCK	1	;POINTER REL WORD IN YM3B
Y3ATE2::	BLOCK	1	;POINTER ATR FILE IN CORE
Y3ATRE::	BLOCK	1	;POINTER ATR FILE IN CORE
Y3SIEN::	BLOCK	1	;NUMBER OF WORDS IN BLOCK DEFINED IN M3ATR
Y3UNR1::	BLOCK	1	;PART OF UNIQUE NUMBER
Y3UNR2::	BLOCK	1	;PART OF UNIQUE NUMBER

;Edit [6] (pass 3) start
Q1==2	;[43]
Q==QSTSIZ-Q1		;Use top of pdl for pass 3 data (stack is too big)
IFL <Q-200>,<PRINTX PASS3 stack too small>
IFG <Q-200-1>,<	;Go on, use the area, lots more where it came from
Q3STSZ=:Q	;This size will do for pass 3
Q==.	;Remember this point
	RELOC	YSTK+Q3STSZ
Y3ENTRY::	BLOCK	1	;Name of entry in case of global class/proc
YINDEX::	BLOCK	1	;[12] Address of index block header word


	RELOC	Q
	PURGE	Q
>;End [6]

	;TABLES FOR CREATING ERROR MESSAGES

	;THE ORDER BETWEEN THE TABLES MUST NOT BE CHANGED
	;WITHOUT CHANGING O3ERR IN MODULE O3
Y3BUFS::	BLOCK	4	;BUFFER LENGTH OF ERROR TABLES
YE3DL::		BLOCK	↑D16
YE3D::		BLOCK	QE3D
YE3M::		BLOCK	QE3M
YE3MI::		BLOCK	300	;600 ERROR MESSAGES


Y3INBU::	BLOCK	2	;COMMAND LIST AT UNBUFFERED INPUT OF ERROR TABLES
Y3INZS::	BLOCK	2	;COMMAND LIST AT INPUT OF ZSE.TMP
Y3INER::	BLOCK	4	;COMMAND LIST AT INPUT FROM SIMERR.ERR

ZSE::		BLOCK	14000	;SYMBOL TABLE

	;TABLES USED TO
	;-HOLD INTERMEDIATE DATA FROM IC2.TMP FOR CREATING LINE NUMBER TABLE
	;-HOLD DATA FROM ATR.TMP
	;-CREATE CROSS REFERENCE LISTING
ZINA::		BLOCK	1
IDL::		;BLOCK	6000		;HASH LINK
IDLA=:IDL+20	;[12] Start of space for ATR info from ATR.TMP
IDR=:IDL+6000	;BLOCK	6000		;LINK BIN TREE
REF=:IDR+6000	;BLOCK	1000		;REFERENCES

Y3LOWE=:REF+1000			;END OF PASS3 VARIBLES
	END